我是第一次尝试systemd.我想在系统启动时启动一个进程.我在启动和运行方面遇到了问题.
systemd应该运行一个脚本(start.sh).此脚本在后台启动进程(让我们称之为P)并使用代码0退出.
P一直持续运行直到信号发生.
如果我手动运行start.sh一切正常.
如果我让它从systemd开始,P会在启动SIGTERM后立即启动并终止.
所以它开始但信号呢?
它终止了P,我不确定它的起源和原因.
也许我的单位错了,但我不知道如何根据我的需要设置它.
我试过service-type simple,idle和oneshot.
感谢帮助!
克里斯
这是我的单位.
[Unit] Description=Test After=sshd.service [Service] Type=oneshot ExecStart=/home/max/start.sh start Restart=no User=root SuccessExitStatus=0 [Install] WantedBy=multi-user.target
这是地位.
Loaded: loaded (/etc/systemd/system/test.service; enabled) Active: inactive (dead) since Die 2016-02-23 20:56:59 CET; 20min ago Process: 1046 ExecStart=/home/max/test.sh start (code=exited,status=0/SUCCESS)
解决方法
当start.sh完成时,systemd会杀死与start.sh相同的cgroup中的所有内容
你的选择是:
>在Unit部分中设置KillMode进行处理(默认为control-group).这将导致systemd仅杀死它直接触发的进程.
>不要让start.sh在后台启动并退出,但要在前台执行它
我认为在您的情况下,选项2是可行且更直接的.