目标:希望实现一个程序的开机自启动和守护进程。
实现:编写sh脚本文件,启动systemctl系统服务,实现开机自启动。
创建test.sh脚本文件:
#!/bin/bash
cd dir
#把文件放在后台运行
./目标文件 &
编写service文件,在/lib/systemd/system文件夹中创建需要的.service文件,文件内容见下:
[Unit]
Description=xx server daemon
[Service]
ExecStart=/xx/test.sh
Restart=on-failure
RestartSec=10
Type=forking
[Install]
WantedBy=multi-user.target
之后实现开机启动,运行systemctl enable xx.service
,即可将此加入/etc/systemd/system文件夹中的system启动项中。
存疑:目前还未实现守护进程功能,开机自启动后无法通过kill关闭运行的程序,只能通过systemctl stop xx.service
来停止程序。留待研究。
入门教程:systemd入门教程:命令篇
实战教程:systemd入门教程:实战篇
官方说明文档:systemd官方文档
官方启动顺序:systemd官方启动顺序