打开user lingering来运行服务 + 在linux上建立aria2c服务
概括
最近在搞自己的小主机,在配置自己的aria2c服务的时候,发现aria2的服务时不时就会断掉,并报错Emergency shutdown sequence commencing
。
本文介绍了如何修复这个问题,以及我的aria2服务配置
问题
因为想要aria2c以非root用户运行,我用 systemctl --user start aria2.service
,这个时候服务正常启动,也不会结束。
但是,一旦我退出这个ssh session,过几秒之后aria2c就会自动停止。
重复几次试验后,确认了退出ssh session后,aria2c服务就会停止。
下面是报错的日志
1 | 2022-04-24 12:55:45.578362 [NOTICE] [HttpListenCommand.cc:108] IPv4 RPC: listening on TCP port 6800 |
原因&解决方法
在进行了一定时间的互联网冲浪后,我在stackexchange上找到了解决方法: 链接.
原因是运行这个service的用户没有user lingering
。
根据 loginctl 的 man page所说
Enable/disable user lingering for one or more users. If enabled for a specific user, a user manager is spawned for the user at boot and kept around after logouts. This allows users who are not logged in to run long-running services.
简单来说,如果一个用户没有开启user lingering
,他开启的service在这个用户登出之后就会自行结束。
所以,解决方法就是为运行这个service的用户开启user lingering
我们可以用这个命令来打开
1 | sudo loginctl enable-linger aynakeya # enable user linger for aynakeya |
开启完毕后我们再次启动service,然后登出ssh session。发现这个时候aria2已经不会自动退出了。
Aria2 As Service
顺便贴一下aria2作为系统服务的配置。
安装好aria2后,把这个文件aria2.service
放到 /etc/systemd/user/
目录下即可。
启动aria2的方式为: systemctl --user start aria2.service
关闭为: systemctl --user stop aria2.service
1 | [Unit] |
aria2-daemon.conf
的内容如下
1 | # server config |