Linux添加自启动daemon service
需求
项目要编写一个程序,要求随工控机上电启动,并能在崩溃后自动重启程序。
实现
涉及到daemon的概念,个人倾向于用service实现。
脚本需要root权限,修改ExecStart=/bin/sleep 999
为对应业务程序地址
服务名称xxx可自定义
#!/bin/bash
file=/etc/systemd/system/xxx.service
if [ $UID -gt 0 ];then
echo "Please run with root!"
exit 0
fi
# creat a system service
rm -rf $file
cat <<EOF >>$file
[Unit]
Description=xxx daemon service
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
ExecStart=/bin/sleep 999
ExecReload=/bin/kill -HUP $MAINPID
Restart=always
[Install]
WantedBy=multi-user.target
EOF
# launch
chmod +x $file
systemctl enable xxx
systemctl start xxx
附加
可在service栏目中定义用户进行权限约束(默认为root)
配置自定义重启间隔,启动目录和环境变量
[Service]
User=ubuntu
RestartSec=5s
WorkingDirectory=/home/ubuntu/xxx
Environment=USER=ubuntu HOME=/home/ubuntu