【Linux基础】启动脚本之Systemd服务

背景

由Systemd服务调用的脚本,拉起的程序被莫名的杀掉;

原因

是应为Systemd的模式选项使用错误;

解析

Systemd服务类型(Type=simple):
在Systemd单元文件中,Type=simple默认表示当ExecStart指定的主命令启动后,服务即被认为是活动的。在这种情况下,当主命令(即scanner-app.sh脚本)退出时,Systemd可能会认为整个服务结束了,从而结束所有相关的进程。

脚本代码

修改前

脚本结束后,所有cm-app.sh拉起的nohup后台程序都会被杀;

[Unit]
Description=CM run...
After = multi-user.target cm-app.target

[Service]
ExecStart=/etc/cm-app.sh
Type=simple
#StandardOutput=tty
#StandardError=tty

[Install]
WantedBy=multi-user.target

修改后

脚本结束后,所有cm-app.sh拉起的nohup后台程序不会被杀;

[Unit]
Description=CM run...
After = multi-user.target cm-app.target

[Service]
ExecStart=/etc/cm-app.sh
Type=forking
#StandardOutput=tty
#StandardError=tty

[Install]
WantedBy=multi-user.target

你可能感兴趣的:(linux,服务器)