CentOS7 systemctl在我的procceses已经被终止后重新启动时调用ExecStop

我有一个systemd脚本,如下所示:

[Unit] Description=My sites Before=shutdown.target reboot.target halt.target [Service] Type=oneshot ExecStart=/bin/bash -c '/etc/xxx/mySites start' ExecStop=/bin/bash -c '/etc/xxx/mySites stop' KillMode=none SendSIGKILL=no TimeoutStopUSec=5min TimeoutSec=5min TimeoutStopSec=5min [Install] WantedBy=multi-user.target 

现在…如果我尝试执行sudo systemctl start mySites.service它似乎服务运行,所有我的东西开始正确。 如果我stop来也行。 然后,在操作系统启动时,它也开始正确。 问题是在操作系统关机。 我正在重新启动它,似乎如果ExecStop WAS调用太…但是太迟了…我在日志中看到,我的进程都收到杀死,因为我可以在我的日志中看到:

  signal 15, SIGTERM, received from process 1 userId 0 si_code: 0, SI_USER, signal from kill(2), sigsend(2), raise(3C) or abort(3C) si_signo 15 si_errno 0 

所以.. ExecStop似乎被称为太晚了,因为有人已经杀死了我最初开始的进程。 不过,我已经设置了Before=shutdown.target reboot.target halt.target

我认为问题可能是我的ExecStop可能比默认的超时时间更长,因此systemd最终会发送SIGTERM。 现在…我已经设置KillMode=noneSendSIKKILL=no ,甚至所有可能的超时到5分钟TimeoutStopUSecTimeoutSecTimeoutStopSec (肯定我的ExecStop不到5分钟)。

仍然没有运气。

任何想法如何解决这个问题? 我正在运行CentOS 7。

提前致谢,

尝试

 [Unit] Description=My sites After=NetworkManager.service Requires=NetworkManager.service [Service] Type=oneshot ExecStart=/bin/bash -c '/etc/xxx/mySites start' ExecStop=/bin/bash -c '/etc/xxx/mySites stop' RemainAfterExit=true [Install] WantedBy=multi-user.target