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?
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
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.
shutdown -h now
Ich glaube, dass Sie nach dem Aufrufen den Befehlszeilenzugriff sofort verlieren,halt -p
so dass Sie nicht mehr viel tun können.Antworten:
Sie können ausführen
shutdown -c
, um ein bereits ausgeführtes Herunterfahren abzubrechen.quelle
ctrl+c
ctrc+c
und bewusstshutdown -c
. Aber angesichts der Geschwindigkeit der-now
Option und nicht ihrer geplanten Geschwisterctrl+c
wä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.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 wirdIch habe dies mit dem folgenden Skript versucht und es ist nicht schnell genug, um das Herunterfahren zu stoppen
Wo wie interaktiv
Das System bleibt auf.
quelle
Aus der FreeBSD-Manpage:
Funktioniert also
killall shutdown
auf BSD, wenn ein geplantes Herunterfahren vorliegt (zBshudown -h +5
).Ich denke nicht, dass es machbar ist, ein sofortiges Herunterfahren (
shutdown -h now
) im realen Szenario abzubrechen .quelle
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
quelle