나는 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