KillMode参数
contorl-group (默认) # 当前控制组里所有的子进程都会被杀掉
process : #只杀主进程
mixed: #主进程将收到SIGTERM(终止进程)信号,子进程将收到SIGKILL(无条件终止)信号
none: # 没有进程会被杀掉,只是执行服务的stop命令
解决办法
将 KillMode 改成 process 或 none, 然后执行 systemctl daemon-reload.
[Unit] Description= by chao [Service] User=chao Group=chao KillMode=none ExecStart=sh /home/chao/server/bin/start.sh ExecStop=sh /home/chao/server/bin/stop.sh PrivateTmp=true StandardError=journal+console [Install]
下面是我的情况
我有个 python tornado 服务, 启动脚本是 server.py, 这个服务有个重启功能, 接受到重启请求后, 会起一个进程p1把自己kill 掉,然后再把自己启动;目前运行良好。
然后我注册了一个service,实现开机自启动; 但是发现重启功能不好用了,kill 掉之后没有启动自己。
经过不断加日志和测试,发现是systemctl 启动的进程,kill掉之后,子进程也会一起kill 掉;即 contorl-group (默认) # 当前控制组里所有的子进程都会被杀掉
所以我在service 文件里增加了 KillMode 参数,并设置为none。
https://www.freedesktop.org/software/systemd/man/latest/systemd.kill.html#KillMode=
标签:脚本,systemd,python,KillMode,chao,kill,none,进程 From: https://www.cnblogs.com/fadedlemon/p/18024761/luxin