让systemd直接管辖aria2服务
这篇省不了流,省了你也不知道怎么解决。
前段时间开始玩Ubuntu当服务器用,用apt装了个Aria2,又装了个AriaNG拿来挂下载。
然后问题来了,原版Aria2单文件下载线程数限死在16线程,相比Motrix自带的修改版Aria2慢如狗。然后就是扒拉下来Aria2源文件改了自己编译,又因为技术力不够摸不清咋用make编译……
把编译好的文件丢到/usr/bin下面,顺带按照教程放了个SysV脚本到/etc/init.d/下面让它自己生成服务配置文件。
然后问题又双叒叕来了,这个Aria2三天两头崩溃,systemctl就给你挂个running(exited)也不重启,手动重启服务又连不上,只能先stop再run,烦死个人。
所以最后就决定换成原生systemctl服务,直接管辖aria2c。
方案
以下代码由DeepSeek辅助生成,经本人验证可以正常使用。
一、创建标准systemd服务文件
1
sudo vim /etc/systemd/system/aria2.service(题外话:vim用习惯之后真的觉得nano就是史,一堆令人难受的快捷键,远不如vim好用)
按i切换到编辑模式,添加以下内容(内容可以自己调整):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[Unit]
Description=Aria2c Download Service
After=network-online.target
[Service]
User=aria2user # 建议使用专用用户,然后和root放在同一组里。当然,也可以直接用root。
Group=aria2user # 用户组,单纯用root的话可以删掉
Type=simple # 直接管辖
ExecStart=/usr/bin/aria2c --conf-path=/etc/aria2/aria2.conf # 这里的conf-path参数指的是aria2默认配置文件的路径,一般都在这个地方
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure # 让aria2服务在异常退出(非0状态码)的情况下自动重启。想要高稳定性的可以设成always。
RestartSec=3 # 3秒自动重启
KillSignal=SIGTERM
StandardOutput=syslog # 记录日志到系统日志
StandardError=syslog
SyslogIdentifier=aria2c
[Install]
WantedBy=multi-user.target按Esc退出编辑模式,输入 :wq(有个冒号别漏了)保存并退出。
二、替换原有SysV文件
先停掉aria2服务:
1
2
sudo systemctl stop aria2c
sudo systemctl disable aria2c然后删除掉原有的SysV脚本:
1
sudo rm /etc/init.d/aria2c或者你也可以先备份到别的地方(例如用户主目录)避免褒姒:
1
sudo mv /etc/init.d/aria2c ~然后重载系统服务,应用新配置:
1
2
sudo systemctl daemon-reload
sudo systemctl enable --now aria2最后验证确实在运行:
1
systemctl status aria2
AriaNG也连好了,完美!
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 橙子冰棒的博客!
评论
