È possibile interrompere un comando di spegnimento?


23

Supponendo che tu abbia appena inserito il comando shutdown -h now(o qualcosa di equivalente), c'è realisticamente qualcosa che puoi fare (se sei abbastanza veloce) per evitare che la macchina si spenga?


Una volta che invochi shutdown -h now, credo che perdi l'accesso alla riga di comando immediatamente in modo simile a halt -pcosì non c'è molto che puoi fare.
Ken,

@Ken: su Ubuntu e Centos collegati tramite putty la riga di comando rimane disponibile per alcuni secondi.

Perché dire "adesso" se non intendi "adesso"?
Fred Nurk,

Risposte:


22

È possibile eseguire shutdown -cper annullare un arresto già in esecuzione.


1
All'inizio non ci credevo, ma sì. Più specificamentectrl+c
Ken,

2
@Ken: shutdown -c e [Ctrl] + [c] sono completamente diversi. shutdown -c è un comando che annulla un arresto precedentemente programmato (anche "adesso" è programmato in questo senso --- ma se la cancellazione impedirà il riavvio è un po 'una corsa in quel caso). [Ctrl] + [c] farà sì che il tuo terminale generi un SIGINT (segnale di interruzione) a qualunque processo sia attualmente collegato ad esso. Questo potrebbe funzionare su un comando di arresto in esecuzione, ma è piuttosto secondario alla tua domanda.
Jim Dennis,

1
@Jim Dennis: sono consapevole della differenza tra ctrc+ce shutdown -c. Ma data la velocità -now dell'opzione piuttosto che il suo fratello programmato, ctrl+csarebbe il percorso più veloce a tal fine. Non credevo che potresti fermare un arresto immanente, ancora più sorpreso di poterlo interrompere, ma a quanto pare puoi, ma è una corsa come hai affermato.
Ken,

13

Se sei abbastanza veloce puoi emettere un init 2(o qualunque runlevel tu voglia) e questo probabilmente fermerà l'arresto. Tutto ciò che comporta l'uccisione del comando shutdown fallirà poiché il comando viene eseguito troppo rapidamente

Ho provato questo con lo script qui sotto e anche non è abbastanza veloce per fermare l'arresto

#!/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

Dove interattivamente

shutdown -h now
init 2 

il sistema rimane attivo.


1

Dalla pagina man di FreeBSD:

Un arresto programmato può essere annullato uccidendo il processo di arresto (un SIGTERM dovrebbe essere sufficiente).

Quindi killall shutdownfunziona su BSD in caso di arresto programmato (ad es shudown -h +5.).

Non penso sia possibile annullare un arresto immediato ( shutdown -h now) nello scenario di vita reale.


0

si supponga di aver inviato un messaggio di riavvio o spegnimento a tutti i terminali a scopo di manutenzione che "il server sta per riavviare o arrestare a scopo di manutenzione entro 10 minuti"

Questo tipo di comando può essere annullato.

basta premere Ctrl+C

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.