Ich schlage nicht vor, Folgendes zu tun, wenn Sie nicht aus ganz besonderen Gründen dazu gezwungen werden:
kill -SEGV 1 # should generate a core dumps and kernel panic
kill -ABRT 1 # should generate a core dumps and kernel panic
kill -9 1 # On old systems worked nowadays not
Es ist rauh, brutal und kann als naheliegendes Äquivalent zum Ausstecken des Netzkabels angesehen werden ...
Der richtige Weg ist bei Bedarf shutdown -h now
mit sudo
vorher.
Vielleicht sollte ich den rechtmäßigen Weg sagen ; siehe unten oder besser dr.
Einige Worte mehr , auch bekannt als Die Geschichte, Kapitel I
Am Anfang war der Anfang und es wird bis zum Ende dauern.
Die ganze Linux hängt von der liebevollen Pflege von init [ 1 ] [ 2 ] . Nichtsdestotrotz und nicht ohne ein gewisses Maß an Undankbarkeit gab es eine Zeit, in der der gute Lord Root-Benutzer diese Liebe verraten und plötzlich kill
mit einer unumstößlichen ( -9
) Anweisung beginnen konnte.
( Das Book of Etiquette schreibt vor, dass Grafschaften, Herzöge und Markgrafen Benutzer vor a aufrufen müssen sudo
.)
Dann machten einige Zauberer einen Zauber, um Init (aus dem Buch von man 2 init
) zu beschützen.
Die einzigen Signale, die an Prozess-ID 1, den Init-Prozess, gesendet werden können, sind solche, für die init explizit Signalhandler installiert hat. Auf diese Weise wird sichergestellt, dass das System nicht versehentlich heruntergefahren wird.
(Unsere Spione berichten [ U1 ], dass init 1 HUP 6 ABRT 11 SEGV 15 TERM 30 PWR 2 INT 10 USR1 14 ALRM 17 CHLD 32 handhaben wird.)
Also lernt der gute Lord root-Benutzer die Nachrichten und ändert den Befehl in kill -ABRT 1
oder kill -SEGV 1
das erzeugt normalerweise a Kernel-Panik und ein Core-Dump.
Dies funktioniert, weil init der erste Prozess ist, der ausgeführt wird und die PID-Nummer 1 erhält [ 2b ] .
Dies ist unsicher, unklug und Sie glauben, dass es ein Vorbote für ein schlechtes Omen und einen Fluch ist, aber wenn Sie die Hände nicht materiell aufsetzen und den Stecker ziehen können ...
Der Fluch : Es schreibt nicht in das Protokoll, es bricht nicht alle Prozesse ab und wartet auf deren Beendigung. Es schreibt nicht auf die Festplatte und aktualisiert auch nicht die Inodes. Es macht nicht einmal etwas aus, dass die Optionen der Grafikfenster und der Shell-Historien und viele andere, die außerhalb unserer Vorstellungskraft liegen, gespeichert werden. Wie wir bereits sagten, entspricht dies in etwa dem Herausziehen des Netzkabels oder des Akkus eines Laptops.
Der richtige Weg
"Non nobis, Domine, non nobis, sed nomini tuo da gloriam", das Motto der Tempelritter.
Der rechtmäßige (richtige) Weg ist, shutdown
[ 3 ]
sudo shutdown -h now
Herunterfahren sorgt dafür, dass das System auf sichere Weise heruntergefahren wird. Alle angemeldeten Benutzer werden benachrichtigt, dass das System ausfällt und ...
aber damit werden -h now
sie nicht genug Zeit haben, um so viel zu tun ...
Einige Worte mehr , auch bekannt als Die Geschichte, Kapitel II Es waren
einmal einige logische Schritte vom Himmel über den Unix-Leuten:
Sobald Systemprozesse beendet und Dateisysteme abgemeldet wurden, wird das System automatisch angehalten / ausgeschaltet oder neu gestartet. Dies geschieht mit dem Befehl halt oder reboot, der die Änderungen mit den Festplatten synchronisiert und dann das eigentliche Anhalten / Ausschalten oder Neustarten durchführt. [ 4 ]
Tatsächlich vertrauen wir heutzutage nicht mehr auf die Existenz der drei Moirai [ 5 ] der Linux - Welt , reboot
, poweroff
und halt
[ 6 ] : die moderne Wissenschaft von ls -l $(which poweroff halt reboot)
und der von man reboot
Spreads ein neues Licht auf diesem Alter dunkel und offenbaren uns dass es nur einen wahren Befehl gibt, der alle ihre Optionen analysiert, so dass wir endlich frei sind, nach Aktionen zu fragen, die ihren Befehlsnamen widersprechen! ( halt -p
oder reboot -p
für poweroff
, shutdown -r
für reboot
...)
Nun, da alles für alle klar und gemütlich zu sein schien, behaupten Gerüchte, [ 7 ] dass in der Unterwelt von systemd toolset [ 8 ] eine Revolution durchgeführt wurde, die die gesamte Überwelt unbemerkt ließ . Dank einer Armee von Rückwärtskompatibilität Beilagen haben wir gar nicht bemerkt , dass Neustart, poweroff, halt [ 6 ] und sogar telinit [ 9 ] und Abschaltung [ 3 ] werden alle bereits auf den neuen König systemctl begrenzt [ 10 ]. Bitte hören Sie die ganze Geschichte mit der Originalstimme von JdeBP The Bard [ 9 ], da ich keinen Atem mehr habe.
Wenn Sie Anhänger des Ubuntu-Kults sind, sind Sie sich möglicherweise noch eine Weile all dieser Behauptungen bewusst [ 11 ] .
Die mittlere Erde von halt -f
, init
, telinit
, systemctl
Suche nach Lösung schneller als die richtigen , aber auch weise.
systemctl --force --force poweroff # the most close to kill -9 1
systemctl --force poweroff # rough but still safe
sudo halt -f # rough
sudo telinit 0 # or 6 # safe
kill -SIGINT 1 # cause reboot as the reboot command
kill -SIGRTMIN+4 1 # cause shutdown as the halt command
Dass Sie sich unter System befinden oder nicht, sollten Sie in der Lage sein, den Computer anzuhalten, ohne alle korrekten Shudown-Prozeduren aufzurufen (und das schneller):
halt -f
: Angabe der Option-f
(beachten Sie, dass Sie -f
das Herunterfahren vermeiden müssen) mit dem obigen Befehl, mit sudo poweroff -f
oder sogar mit sudo reboot -f -h
. In der Tat können wir aus man reboot
(und Äquivalenten) über die Notwendigkeit lesen , die Option anzugeben -f
, um zu vermeiden, dass das Herunterfahren aufgerufen wird:
Wenn dieses Tool mit --force oder Runlevel 0 oder 6 aufgerufen wird , ruft es den Systemaufruf reboot (2) auf (mit dem übergebenen Argument REBOOTCOMMAND) und startet das System direkt neu .
Andernfalls wird einfach das Tool shutdown (8) mit den entsprechenden Argumenten aufgerufen, ohne das Argument REBOOTCOMMAND zu übergeben.
-f, --force
nicht shutdown (8) auf und führt stattdessen die eigentliche Aktion aus, die Sie vom Namen erwarten würden .
Außerdem können Sie telinit
[ 2b ] (oderinit
direkt) verwenden
sudo telinit 0 # or 6
um init anzuweisen, den Runlevel zu ändern ... aber wenn ja, warum nicht direkt töten?
Unter systemd können Sie die unwise double Option verwenden --force --force
systemctl --force --force poweroff
Lesen aus dem Systemhandbuch [ 10 ]
-f, --force Überschreibt
bei Verwendung mit enable alle vorhandenen in Konflikt stehenden Symlinks.
Bei Verwendung mit halt
, poweroff
,reboot
oder kexec, führen Sie den ausgewählten Vorgang ohne alle Einheiten heruntergefahren. Alle Prozesse werden jedoch gewaltsam beendet, und alle Dateisysteme werden nicht oder nur mit Lesezugriff erneut bereitgestellt. Dies ist daher eine drastische, aber relativ sichere Option, um einen sofortigen Neustart anzufordern. Wenn --force für diese Vorgänge zweimal angegeben wird, werden sie sofort ausgeführt, ohne dass Prozesse beendet oder Dateisysteme abgemeldet werden. Warnung: Das zweimalige Angeben von --force bei diesen Vorgängen kann zu Datenverlust führen.
Ps> Lassen Sie sich von Varianten aus dem Schwanz JdeBP The Bard [ 7 ] inspirieren .