Kann ein Befehl zum Herunterfahren gestoppt werden?

23

Angenommen, Sie haben gerade den Befehl shutdown -h now(oder etwas Äquivalentes) eingegeben. Können Sie realistisch etwas tun (wenn Sie schnell genug sind), um das Herunterfahren der Maschine zu verhindern?

Jonathan
quelle
shutdown -h nowIch glaube, dass Sie nach dem Aufrufen den Befehlszeilenzugriff sofort verlieren, halt -pso dass Sie nicht mehr viel tun können.
Ken
@Ken: Auf Ubuntu und Centos, die über Putty verbunden sind, bleibt die Befehlszeile einige Sekunden lang verfügbar.
Warum "jetzt" sagen, wenn Sie nicht "jetzt" meinen?
Fred Nurk

Antworten:

22

Sie können ausführen shutdown -c, um ein bereits ausgeführtes Herunterfahren abzubrechen.

Dogbane
quelle
1
Habe es zuerst nicht geglaubt, aber ja. Genauer gesagtctrl+c
Ken
2
@Ken: shutdown -c und [Strg] + [c] sind völlig unterschiedlich. shutdown -c ist ein Befehl, der ein vorher geplantes Herunterfahren aufhebt (auch "jetzt" ist in diesem Sinne geplant - aber ob der Abbruch den Neustart verhindert, ist in diesem Fall ein Rennen). [Strg] + [c] veranlasst das Terminal, ein SIGINT (Interruptsignal) für den Prozess zu generieren, der aktuell an das Terminal angeschlossen war. Dies funktioniert möglicherweise bei einem ausgeführten Befehl zum Herunterfahren, ist jedoch für Ihre Frage eher ungewöhnlich.
Jim Dennis
1
@ Jim Dennis: Mir ist der Unterschied zwischen ctrc+cund bewusst shutdown -c. Aber angesichts der Geschwindigkeit der -now Option und nicht ihrer geplanten Geschwister ctrl+cwäre dies der schnellste Weg. Ich habe nicht geglaubt, dass Sie ein immanentes Herunterfahren stoppen könnten, noch mehr überrascht, dass Sie es unterbrechen können, aber anscheinend können Sie es, aber es ist ein Rennen, wie Sie angegeben haben.
Ken
13

Wenn Sie schnell genug sind, können Sie einen init 2(oder einen beliebigen Runlevel) ausgeben , der das Herunterfahren wahrscheinlich stoppt. Alle Aktionen, bei denen der Befehl zum Herunterfahren abgebrochen wird, schlagen fehl, da der Befehl zu schnell ausgeführt wird

Ich habe dies mit dem folgenden Skript versucht und es ist nicht schnell genug, um das Herunterfahren zu stoppen

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

Wo wie interaktiv

shutdown -h now
init 2 

Das System bleibt auf.


quelle
1

Aus der FreeBSD-Manpage:

Ein geplantes Herunterfahren kann abgebrochen werden, indem der Herunterfahrvorgang abgebrochen wird (ein SIGTERM sollte ausreichen).

Funktioniert also killall shutdownauf BSD, wenn ein geplantes Herunterfahren vorliegt (zB shudown -h +5).

Ich denke nicht, dass es machbar ist, ein sofortiges Herunterfahren ( shutdown -h now) im realen Szenario abzubrechen .

Marián Černý
quelle
0

Angenommen, Sie haben zu Wartungszwecken eine Meldung zum Neustart oder Herunterfahren an alle Terminals gesendet, dass der Server zu Wartungszwecken innerhalb von 10 Minuten neu gestartet oder heruntergefahren wird.

Diese Art von Befehl kann abgebrochen werden.

drücke einfach Ctrl+C

Manjur
quelle