임의의 시간 동안 시스템 종료를 지연하는 가장 좋은 방법은 무엇입니까 systemd
?
나는 다음 단위를 시도하고 있습니다 :
root@ip-172-30-3-65:~# cat /etc/systemd/system/delay_by30.service
[Unit]
Description=Delay Shutdown by 30 sec.
#Before=apache2 nginx php5-fpm
[Service]
Type=oneshot
ExecStart=/bin/echo
ExecStop=/bin/sleep 30
[Install]
WantedBy=multi-user.target
그러나 내가 얻은 결과는 매우 혼란스럽습니다. 우선, 내 라인은 어떻게든 ExecStop
계속 실행되고 있지만 예상대로 실행되지는 않습니다. 타임스탬프는 다음을 확인합니다.systemctl start
ExecStart
systemctl stop
journalctl
root@ip-172-30-3-65:~# systemctl enable delay_by30.service
Created symlink from /etc/systemd/system/multi-user.target.wants/delay_by30.service to /etc/systemd/system/delay_by30.service.
root@ip-172-30-3-65:~# systemctl start delay_by30.service
root@ip-172-30-3-65:~# systemctl stop delay_by30.service
root@ip-172-30-3-65:~# journalctl -n 4 -u delay_by30
-- Logs begin at Fri 2017-01-06 17:05:34 GMT, end at Mon 2017-01-09 15:57:34 GMT. --
Jan 09 15:55:59 ip-172-30-3-65 systemd[1]: Starting Delay Shutdown by 30 sec....
Jan 09 15:56:29 ip-172-30-3-65 systemd[1]: Started Delay Shutdown by 30 sec..
Jan 09 15:57:34 ip-172-30-3-65 systemd[1]: Stopped Delay Shutdown by 30 sec..
답변1
RemainAfterExit=yes
섹션 에 추가해야 합니다 [Service]
. 이제 systemd는 프로세스( /bin/echo
) 종료를 확인하고, 이 시점에서 서비스가 종료되었다고 생각하고 중지를 진행합니다.
(라인 없이도 할 수 있지만 ExecStart
테스트하지는 않았습니다.)