systemctl stop某个服务时,保留服务开启的子程序
背景
有一个web服务由systemctl控制。
现在要通过web页面升级程序。
升级前要停掉web服务,否则无法更新web相关的文件。
执行systemctl stop web时,升级程序也被杀死了...
原因
默认情况下systemctl stop 时会对同一个control group (cgroup) 的所有进程都发送一个SIGTERM信号。
方案
在[Service]段加上KillMode=process
这样就只会发SIGTERM信号给主进程。