systemd를 사용하여 시스템 종료를 지연하시겠습니까?

systemd를 사용하여 시스템 종료를 지연하시겠습니까?

임의의 시간 동안 시스템 종료를 지연하는 가장 좋은 방법은 무엇입니까 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 startExecStartsystemctl stopjournalctl

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테스트하지는 않았습니다.)

관련 정보