Como desabilitar o desligamento para que um processo importante não possa ser interrompido?

7

Qual é a maneira mais simples de desativar ou suspender temporariamente a reinicialização / desligamento quando um processo importante está em execução? O processo demora muito para terminar e não pode ser pausado / retomado, então eu gostaria de evitar desligar o pc enquanto ele está rodando. Ele é executado a partir do cron, a menos que eu verifique manualmente se há processos em execução, não sei se está sendo executado. Obrigado.

    
por zang3tsu 19.03.2012 / 09:07

6 respostas

1

Execute which shutdown para ver onde está o caminho para o programa de desligamento. Você pode renomear o arquivo, embora eu recomende contra ele.

Outro método (mais seguro). Use um alias: alias shutdown=' ' Algo assim é mais reversível. Se você estiver tentando impedir o desligamento de todos os usuários, adicione o alias globalmente.

    
por 20.03.2012 / 01:04
13

Para sistemas mais novos com systemd isso foi resolvido por systemd-inhibit . Exemplo de uso:

systemd-inhibit --why="Doing weekly backup" bash my-backups.sh

Em seguida, se um usuário tentar desligá-lo, ele não será permitido, a menos que seja forçado.

❯ systemctl poweroff
Operation inhibited by "bash my-backups.sh" (PID 2414 "systemd-inhibit", user ntrrgc),
reason is "Doing weekly backup".
Please retry operation after closing inhibitors and logging out other users.
Alternatively, ignore inhibitors and users with 'systemctl poweroff -i'.
    
por 21.02.2016 / 13:21
2

Desative os comandos "shutdown / reboot / poweroff / halt / hostname" como nos servidores de missão crítica

chmod 0 /sbin/shutdown

se você precisar usá-lo, chmod ele de volta para chmod 0755 .

    
por 17.10.2014 / 10:18
1

Eu desabilitaria o comando no arquivo / etc / sudoers de modo que somente o root possa executá-lo.

em / etc / sudoers

# Cmnd alias specification
Cmnd_Alias     SHUTDOWN = /sbin/shutdown

# User privilege specification
root    ALL=(ALL:ALL) ALL
vmule   ALL=(ALL:ALL) ALL, !SHUTDOWN

e quando tento executar o comando:

vmule@debian:~$ sudo /sbin/shutdown  -r now
Sorry, user vmule is not allowed to execute '/sbin/shutdown -r now' as root on debian.vm
    
por 17.10.2014 / 11:08
0

Eu queria impedir que um usuário local desligasse um laptop durante uma atualização. Desativar o dispositivo de entrada foi o melhor caminho a percorrer. Para mim, foi suficiente desativar o mouse, mas o teclado também pode ser desativado.

Claro que há uma desvantagem, o computador não pode ser usado durante esse período.

Desativar teclado & Entrada do mouse no unix (abaixo de X)

    
por 25.08.2014 / 19:53
0

shutdown é tecnicamente um aplicativo também, que você pode remover. Execute which shutdown . which é um comando que mostra o caminho de um aplicativo. No meu caso, a saída é /sbin/shutdown . É um arquivo para que você possa fazer apenas rm shutdown . Ou, se quiser desativá-lo, copie-o temporariamente, altere o nome e remova o arquivo original.

Você deve ter as permissões suficientes se quiser fazer rm shutdown . É somente leitura, por isso você pode receber um erro. Tente removê-lo como root ou, se necessário, tente usar o comando rm shutdown .

    
por 25.08.2014 / 20:23