GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kann man einen Computer sofort (1 bis 5 Sekunden) herunterfahren, ohne einen physischen Schalter/Steckdose zu verwenden?

sudo shutdown -h now

Ich schlage nicht vor, Folgendes zu tun, wenn Sie nicht aus ganz besonderen Gründen gezwungen sind:

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 grob, brutal und kann als ähnliches Äquivalent zum Herausziehen des Netzkabels angesehen werden ...

Der richtige Weg ist shutdown -h now mit sudo vorher bei Bedarf.
Vielleicht sollte ich den rechtmäßigen Weg sagen; siehe unten oder besser tl;dr.

Ein paar Worte mehr , auch bekannt als Die Geschichte, Kapitel I
Am Anfang war die Init und wird es bis zum Ende sein.

Das ganze Linux hängt von der liebevollen Pflege ab von init . Trotzdem und nicht ohne eine gewisse Undankbarkeit gab es eine Zeit, in der der gute Gott root user kann diese Liebe verraten und plötzlich kill init mit einem unbestreitbaren (-9 ) bestellen.
(Das Buch der Etikette schreibt für Benutzer von Grafen, Herzögen und Markgrafen vor vor einem sudo aufzurufen ).

Dann haben einige Zauberer einen Zauber gemacht, um init zu schützen (aus dem Buch von man 2 init )

Die einzigen Signale, die an die Prozess-ID 1, den Init-Prozess, gesendet werden können, sind diejenigen, für die init explizit Signal-Handler installiert hat. Dies geschieht, um sicherzustellen, dass das System nicht versehentlich heruntergefahren wird.

diese Init verarbeitet 1 HUP 6 ABRT 11 SEGV 15 TERM 30 PWR 2 INT 10 USR1 14 ALRM 17 CHLD 32)
Also der guter Gott Root-Benutzer Erfahren Sie die Neuigkeiten und ändern Sie den Befehl in kill -ABRT 1 oder kill -SEGV 1 die normalerweise eine Kernel Panic und einen Core Dump erzeugen.

Es funktioniert, weil init ist der erste Prozess, der ausgeführt wird, und nimmt die PID-Nummer 1 an.

Das ist unsicher, unklug und Sie glauben, es ist ein Vorbote eines schlechten Omens und ein Fluch, aber wenn Sie es nicht materiell können, legen Sie die Hände auf und ziehen Sie den Stecker heraus ...

Der Fluch :Es wird nicht in das Protokoll geschrieben, es wird nicht alle Prozesse beenden und auf ihr Ende warten, es wird nicht auf die Festplatte schreiben und die Inodes nicht richtig aktualisieren, noch werden die Dateisysteme ausgehängt; Es macht nichts, es speichert die Optionen der grafischen Fenster und der Shell-Geschichten und viele andere jenseits unserer Vorstellungskraft ... wie gesagt, ein nahes Äquivalent zum Abziehen des Netzkabels oder des Akkus bei einem Laptop.

Der richtige Weg

Die rechtmäßigen Der (korrekte) Weg ist die Verwendung von shutdown

sudo shutdown -h now

Shutdown sorgt dafür, dass das System sicher heruntergefahren wird. Alle angemeldeten Benutzer werden benachrichtigt, dass das System heruntergefahren wird und...

aber mit -h now Sie werden nicht genug Zeit haben, um so viel zu tun...

Ein paar 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 ausgehängt wurden, wird das System angehalten/ausgeschaltet oder automatisch neu gestartet. Dies geschieht mit dem Befehl halt oder reboot, der Änderungen auf die Festplatten synchronisiert und dann das eigentliche Anhalten/Ausschalten oder Neustarten durchführt.

In der Tat traut man heutzutage der Existenz der drei Moirai der Linux-Welt nicht mehr zu , reboot ,poweroff und halt :die moderne Wissenschaft von ls -l $(which poweroff halt reboot) und die von man reboot , wirft ein neues Licht auf dieses dunkle Zeitalter und enthüllt uns, dass es nur einen wahren Befehl gibt, der alle ihre Optionen analysiert, sodass wir endlich frei sind, Aktionen zu fordern, die ihren Befehlsnamen widersprechen! (halt -p oder reboot -p für poweroff , shutdown -r für reboot ...)

Jetzt, wo alles klar und gemütlich zu sein schien, behaupten Gerüchte das in der Unterwelt von systemd toolset eine Revolution wurde durchgeführt und die ganze Überwelt im Unklaren gelassen . Dank einer Armee von Abwärtskompatibilitäts-Shims wir haben überhaupt nicht bemerkt, dass reboot, poweroff, halt und sogar telinit und shutdown bereits an das neue king systemctl gebunden sind. Bitte hören Sie sich die ganze Geschichte mit der Originalstimme von JdeBP The Bard an, weil ich keine Luft mehr habe.

Wenn Sie Anhänger des Ubuntu - Kultes sind , werden Sie sich all dieser Behauptungen vielleicht noch eine Weile bewusst sein .

Die Mittelerde von halt -f , init , telinit , systemctl
Lösung schneller als die richtige suchen, aber ebenso 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

Ob Sie sich unter systemd befinden oder nicht, Sie sollten in der Lage sein, den Computer zu stoppen, ohne alle korrekten Shutdown-Prozeduren aufzurufen (und so schneller):

  1. halt -f :Angabe der Option -f (Beachten Sie, dass Sie -f benötigen um das Herunterfahren zu vermeiden) mit dem obigen Befehl, mit sudo poweroff -f oder vielleicht sogar mit sudo reboot -f -h .Tatsächlich können wir ab man reboot lesen (und Äquivalente) über die Notwendigkeit, die Option -f anzugeben um das Herunterfahren zu vermeiden:

    Bei Aufruf mit --force oder in Runlevel 0 oder 6 ruft dieses Tool den reboot(2)-Systemaufruf selbst auf (mit übergebenem REBOOTCOMMAND-Argument) und startet das System direkt neu .

    Andernfalls wird einfach das shutdown(8)-Tool aufgerufen mit den entsprechenden Argumenten, ohne das REBOOTCOMMAND-Argument zu übergeben.

    -f, --force
    Ruft shutdown(8) nicht auf und führt stattdessen die eigentliche Aktion aus, die Sie vom Namen her erwarten würden .

  2. Außerdem können Sie telinit verwenden (oder init direkt)

    sudo telinit 0    # or 6
    

    um init zu sagen, dass es den Runlevel ändern soll... aber wenn ja, warum es nicht direkt beenden?

  3. Unter systemd können Sie die unkluge doppelte Option --force --force verwenden

    systemctl --force --force poweroff  
    

    Lesen aus dem systemctl-Handbuch

    -f, --force
    Überschreiben Sie bei Verwendung mit enable alle vorhandenen widersprüchlichen symbolischen Links.
    Bei Verwendung mit halt , poweroff , reboot oder kexec, führen Sie die ausgewählte Operation aus, ohne alle Einheiten herunterzufahren. Alle Prozesse werden jedoch zwangsweise beendet und alle Dateisysteme werden ausgehängt oder schreibgeschützt neu eingehängt. Dies ist daher eine drastische, aber relativ sichere Option, um einen sofortigen Neustart anzufordern. Wenn --force für diese Operationen zweimal angegeben wird, werden sie sofort ausgeführt, ohne dass Prozesse beendet oder Dateisysteme ausgehängt werden. Warnung:Die zweimalige Angabe von --force bei einer dieser Operationen kann zu Datenverlust führen.

Ps> Lassen Sie sich von den Schwanzvarianten von JdeBP The Bard inspirieren.


Sie können die Maschine sofort ausschalten, ohne Festplatten zu synchronisieren, indem Sie als root „o“ in /proc/sysrq-trigger schreiben.

Als Shell-Skript würde es in etwa so aussehen

#!/bin/sh
echo o >/proc/sysrq-trigger

Wenn Sie Berechtigungen für /proc/sysrq-trigger haben, müssen Sie es nicht über sysctl aktivieren. Diese Option wirkt sich nur auf das Auslösen per Tastatur aus.

Ich empfehle nicht, dies auf einer Maschine mit einem Dateisystem zu tun, das Sie später lesen möchten.

Ich verwende dies in Google Compute Engine, um Vorlageninstanzen kurz vor der Zehn-Minuten-Marke abzuschlachten, um die Kosteneffektivität von Cluster-Jobs zu maximieren, es funktioniert hervorragend.


Linux
  1. So deaktivieren Sie Befehle zum Herunterfahren und Neustarten in Linux

  2. So erstellen Sie ein physisches Volume unter Linux mit LVM

  3. Wie lade ich Udev-Regeln ohne Neustart neu?

  4. So überwachen Sie Netzwerk-Switch und Ports mit Nagios

  5. Woher weiß ich, ob ich systemd unter Linux verwende?

So vermeiden Sie ein versehentliches Herunterfahren oder Neustarten unter Linux

So wechseln Sie automatisch zu einem Verzeichnis, ohne den Cd-Befehl in Linux zu verwenden

So wechseln Sie zwischen TTYs ohne Verwendung von Funktionstasten in Linux

So laden Sie Pakete mit APT herunter, ohne sie zu installieren

Herunterfahren oder Neustarten von Linux über die Befehlszeile

Wie man Debian 11 herunterfährt oder neu startet