Linux 程序开机启动并保活:Systemd 进程守护管理工具

最早的时候我半懂不懂的抄别人作业,使用 init.rc 来实现开机自启动程序,当然仅仅只能实现开机启动,其它功能全没有,之后一直在想是不是要系统的看看这个工具的,起码实现保活。

后来发现了阮一峰有详细介绍 Systemd 的文章,这才算找到一个比较简单、靠谱的方法来实现服务程序的开机自启和保活

当然这里只简单的说一下我是怎么使用,居家使用足够了,详细的请啃原文,里面有很多有用的命令和方法 >> http://ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html

创建文件

这是最重要的配置步骤,文件放在 /usr/lib/systemd/system , 文件按 XXX.service 格式命名  ,XXX 就是我们的服务名称,如果没有特殊需求,按我下面的格式配置就好了,以我的 aria2 程序为例,基本上只是设置了一下描述和启动命令,其它启动依赖基本上用不上:

sudo nano /usr/lib/systemd/system/Aria2.service

[Unit]
Description= Aria2 application start and daemon
Documentation=
After=
Wants=

[Service]
EnvironmentFile=

#ExecStart设置程序启动命令,平时怎么启动,这里就怎么写
ExecStart=  sudo -u www -g www aria2c --conf-path=/home/www/conf/aria2.conf -D

ExecReload=/bin/kill -HUP $MAINPID
Type=simple
KillMode=process

#Restart设置 aria2 退出后,Systemd 重启它的方式, on-failure 表示发生任何意外就重启 aria2 , always 表示任何情况都重启
#Restart=on-failure
Restart=always
RestartSec=30s

[Install]
WantedBy=multi-user.target

启动服务

service文件保存后,使用命令启动服务  >>>   sudo systemctl start aria2c

检查状态

启动后使用这个命令查看状态 >>>   sudo systemctl status aria2c

设置开机启动

如果状态正常,那么就可以设置开机启动,用这个命令 >>>    sudo systemctl enable aria2c

保活检测

如果想要测试保活,可以使用下面两个方法强行结束进程,看在过了 RestartSec 时间之后服务是否重启 

方法一: sudo  systemctl kill aria2c

方法二:找出进度ID直接用kill结束

yywr.net@h:~$ sudo lsof -i:6800
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
aria2c  38070  www    5u  IPv4 743710      0t0  TCP localhost:6800 (LISTEN)
aria2c  38070  www    6u  IPv6 743712      0t0  TCP ip6-localhost:6800 (LISTEN)
yywr.net@h:~$ sudo kill 38070

附: Restart 重启设置选项,更多资料看前面给出的链接

  • no(默认值):退出后不会重启
  • on-success:只有正常退出时(退出状态码为0),才会重启
  • on-failure:非正常退出时(退出状态码非0),包括被信号终止和超时,才会重启
  • on-abnormal:只有被信号终止和超时,才会重启
  • on-abort:只有在收到没有捕捉到的信号终止时,才会重启
  • on-watchdog:超时退出,才会重启
  • always:不管是什么退出原因,总是重启

本文是 居家服务器折腾笔记 的一部分

One thought on “Linux 程序开机启动并保活:Systemd 进程守护管理工具”

Leave a Reply

Your email address will not be published. Required fields are marked *