在路径更改时重新启动 systemd 服务需要很长时间

在路径更改时重新启动 systemd 服务需要很长时间

我有一个类型为 的 systemd Ubuntu 服务simple,将其称为foo.service,并带有正在执行的 Python 脚本,格式为ExecStart.

然后另一个类型为 的服务oneshot将其称为foo-restart.service正在执行的服务/usr/bin/systemctl restart foo.service

最后,PathChanged单独文件中的指令foo-restart.path指向我的 Python 脚本。

这个想法是,当我更新文件时,服务将重新启动 - 这正在发生,但需要一段时间,并且journalctl -fu foo.service显示:

Oct 08 22:45:14 Vpn445 systemd[1]: Stopping Foo...
Oct 08 22:45:58 Vpn445 python3[2686278]: Yay
Oct 08 22:46:44 Vpn445 systemd[1]: foo.service: State 'stop-sigterm' timed out. Killing.
Oct 08 22:46:44 Vpn445 systemd[1]: foo.service: Killing process 2686278 (python3) with signal SIGKILL.
Oct 08 22:46:44 Vpn445 systemd[1]: foo.service: Killing process 2686305 (python3) with signal SIGKILL.
Oct 08 22:46:44 Vpn445 systemd[1]: foo.service: Killing process 2689506 (python3) with signal SIGKILL.
Oct 08 22:46:44 Vpn445 systemd[1]: foo.service: Main process exited, code=killed, status=9/KILL
Oct 08 22:46:44 Vpn445 systemd[1]: foo.service: Failed with result 'timeout'.
Oct 08 22:46:44 Vpn445 systemd[1]: Stopped Foo.
Oct 08 22:46:44 Vpn445 systemd[1]: Started Foo.

我怎样才能使这个过程更快,我应该触发什么命令来确保服务更快地停止和重新启动,最后,重新加载是否足够。

我也将 foo 的类型更改为oneshot,运行systemctl daemon-reload并重新启动服务,但没有运气。

我可以看到问题所在,因为我每 10 秒登录一条消息。停止进程启动,但脚本仍然运行,直到被强制停止:

Oct 08 23:38:28 Vpn445 systemd[1]: Stopping Foo...
Oct 08 23:38:33 React python3[2692568]: After change
Oct 08 23:38:43 React python3[2692568]: After change

相关内容