Atrasar o desligamento do sistema com o systemd?

1

Qual é a melhor maneira de atrasar o desligamento do sistema por um tempo arbitrário em systemd ?

Estou tentando a seguinte unidade:

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

No entanto, estou obtendo resultados muito confusos. Para os iniciantes minha linha ExecStop de alguma forma é executada em systemctl start e meu ExecStart on systemctl stop , outro caminho em volta do que deveria ser. Os timestamps no journalctl confirmam isso:

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..
    
por NarūnasK 09.01.2017 / 17:08

1 resposta

2

Você precisa adicionar RemainAfterExit=yes à sua seção [Service] . No momento, o systemd está vendo seu processo ( /bin/echo ) sair, quando então considera que o serviço foi encerrado e continua a pará-lo.

(Você provavelmente também pode não ter uma linha ExecStart , mas eu não testei isso.)

    
por 09.01.2017 / 17:30

Tags