É possível parar um comando de desligamento?

23

Supondo que você acabou de digitar o comando shutdown -h now(ou algo equivalente), existe algo realista que você pode fazer (se você for rápido o suficiente) para impedir que a máquina seja desligada?

Jonathan
fonte
Depois que você invoca shutdown -h now, acredito que você perde o acesso à linha de comando imediatamente da mesma halt -pforma que não há muito o que fazer.
Ken
@Ken: no Ubuntu e Centos conectados via massa, a linha de comando permanece disponível por alguns segundos.
Por que dizer "agora" se você não quer dizer "agora"?
precisa saber é o seguinte

Respostas:

22

Você pode executar shutdown -cpara cancelar um desligamento já em execução.

dogbane
fonte
1
Não acreditei no começo, mas sim. Mais especificamentectrl+c
Ken
2
@ Ken: shutdown -c e [Ctrl] + [c] são completamente diferentes. shutdown -c é um comando que cancela um desligamento agendado anteriormente (mesmo "agora" está agendado nesse sentido - mas se o cancelamento impedirá que a reinicialização seja um pouco complicado nesse caso). [Ctrl] + [c] fará com que o terminal gere um SIGINT (sinal de interrupção) para o processo que estiver atualmente conectado a ele. Isso pode funcionar em um comando de desligamento em execução, mas isso é bastante incidental à sua pergunta.
Jim Dennis
1
@ Jim Dennis: Estou ciente da diferença entre ctrc+ce shutdown -c. Mas, dada a velocidade da -now opção e não o irmão programado, ctrl+cseria o caminho mais rápido para esse fim. Eu não acreditava que você pudesse parar um desligamento imanente, ainda mais surpreso por poder interrompê-lo, mas aparentemente você pode, mas é uma corrida como você afirmou.
Ken
13

Se você for rápido o suficiente, poderá emitir um init 2(ou qualquer nível de execução que desejar) e isso provavelmente interromperá o desligamento. Qualquer coisa que envolva matar o comando shutdown falhará, pois o comando é executado muito rapidamente

Eu tentei isso com o script abaixo e ainda não é rápido o suficiente para parar o desligamento

#!/bin/bash
shutdown -h now
shutdown -c "Aborting Shutdown"

Broadcast message from iain@iain-ubuntu
        (/dev/pts/0) at 16:50 ...

The system is going down for halt NOW!
shutdown: Cannot find pid of running shutdown

Onde interativamente

shutdown -h now
init 2 

o sistema permanece ativo.


fonte
1

Na página do manual do FreeBSD:

Um desligamento agendado pode ser cancelado matando o processo de desligamento (um SIGTERM deve ser suficiente).

Então killall shutdownfunciona no BSD quando há um desligamento programado (por exemplo shudown -h +5).

Não acho viável cancelar um desligamento imediato ( shutdown -h now) no cenário da vida real.

Marián Černý
fonte
0

suponha que você enviou uma mensagem de reinicialização ou desligamento a todos os terminais para fins de manutenção, para que o "servidor reinicialize ou desligue para fins de manutenção em 10 minutos"

Este tipo de comando pode cancelar.

basta pressionar Ctrl+C

Manjur
fonte