Linux 下有些时候我们运行一个进程需要一直挂着(这就是 VPS 的意义啊……),这时候需要把前台进程放到后台去。一般可以用 screen,但是如果这种后台进程挂多了,每个都开一个 session 会很不方便。前几天配置 aria2 的时候看到一个神奇的操作:可以配置成一个 service,直接 service aria2c start/stop/restart
就可以了!
[notice]经测试,此方法在 CentOS 7 可能无效……[/notice]
以配置 aria2c 为例,假设我们要运行这个命令(程序),并且放在后台:
/usr/local/bin/aria2c --conf-path=/root/.aria2/aria2.conf -D
可以写如下配置文件:
#!/bin/sh
### BEGIN INIT INFO
# Provides: aria2
# Required-Start: $remote_fs $network
# Required-Stop: $remote_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Aria2 Downloader
### END INIT INFO
case "$1" in
start)
echo -n "Starting aria2c"
/usr/local/bin/aria2c --conf-path=/root/.aria2/aria2.conf -D
;;
stop)
echo -n "Shutting down aria2c"
killall aria2c ;;
restart)
killall aria2c
/usr/local/bin/aria2c --conf-path=/root/.aria2/aria2.conf -D
;;
esac
exit
把文件保存为 aria2c,然后给予运行权限:
chmod +x aria2c
移动到 /etc/init.d/
目录下:
mv aria2c /etc/init.d/
使用方法:
service aria2c start
service aria2c stop
service aria2c restart
来源
August 9th, 2021 at 12:10 am
在使用 systemd 的系统上(2015以来的基本都是),可以编写如下配置文件 aria2cd.service
[Unit] Description=Aria2 Service After=network.target [Service] Type=forking ExecStart=/usr/bin/aria2c --conf-path=/root/.aria2/aria2.conf -D [Install] WantedBy=multi-user.target放置于 /etc/systemd/system,然后 sudo systemctl enable aria2cd 和 sudo systemctl start aria2cd