Como adiar o desligamento com o systemd?

2

Eu uso um computador desktop, que normalmente é desligado durante a noite e, muitas vezes, também durante o dia, quando não está sendo usado ou deixado sem supervisão. Eu costumo desligá-lo da GUI (KDE 4.10), às vezes - do KDM, e às vezes eu também uso um bom, antigo / sbin / shutdown.

Agora : acontece que uma tarefa está sendo executada, o que não deve ser interrompido, como backup, gravação de vídeo, etc. Por motivos óbvios, nesses casos eu preferiria que o desligamento fosse adiada até que o trabalho esteja terminado. Idealmente, um aviso deve ser emitido para o usuário, mas isso nem sempre é possível. Como conseguir isso?

Algum tempo atrás eu escrevi um script executado em um runlevels 0 e 6, que verificava a existência de um arquivo de sinalização, e adiou o processo até que o arquivo desaparecesse. Não era ideal, mas eficiente o suficiente. Mas em versões recentes da minha distribuição init foi substituído por systemd, que executa scripts /etc/init.d/ em paralelo, então o hack não funciona mais.

Se for de alguma importância, eu uso o OpenSuse 12.3, kernel 3.7.10, KDE 4.10.

    
por Jasio 07.12.2013 / 23:25

1 resposta

4

Você deve usar systemd-inhibit . Tudo o que você precisa fazer para evitar que o sistema seja desativado é prefixar um comando com "systemd-inhibit".

Por exemplo, se eu quisesse garantir que o sistema não fosse desligado, ocioso, suspenso, etc. enquanto eu estava gravando um CD, eu faria:

systemd-inhibit brasero

Quando brasero foi fechado, o sistema poderá executar novamente as políticas normais de desligamento.

Para mais informações, consulte man systemd-inhibit

    
por 07.12.2013 / 23:42