linux – systemd:SIGTERM启动后立即启动

我是第一次尝试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是可行且更直接的.

资料来源:https://unix.stackexchange.com/a/231201/45329

相关文章

/etc/sysctl.conf这个目录主要是配置一些系统信息,/etc/sys...
1.作用 useradd或adduser命令用来建立用户帐号和创建用户的起...
它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅...
不管是我们在安装软件还是监测软件的使用性能,我们都要随时...
装好Tomcat7后,发现除了本机能访问外界访问不了,岂有此理。...
修改防火墙配置需要修改 /etc/sysconfig/iptables 这个文件,...