Linux: Herunterfahren von GUI vs. Terminal

538
user590536

Hallo, ich bin neu in Linux und konnte nicht herausfinden, ob das Herunterfahren des Computers über die GUI dasselbe ist wie das Terminal mit dem Befehl:

Herunterfahren -P jetzt

PS Beim Herunterfahren empfängt der init-Prozess ein Signal wie SIGPWR oder SIGTERM oder wird es anders heruntergefahren? Ich hoffe du kannst helfen. Vielen Dank.

0
Angenommen, Ihre Distribution verwendet immer noch `init` (viele verwenden jetzt` systemd`), erhält `init` einen Befehl über eine Socket, auf die er gerade hört (die mit dem Befehl 'poweroff' oder` telinit` gesendet werden kann), um auf run zu schalten Stufe 0 oder 6. Dies führt dazu, dass `init 'die' K * '- Abrißskripts von der aktuellen Stufe aus ausführt und dann die' S * '- Setupskripten für die gewünschte Stufe ausführt. Bei Ausführung der Stufen 0 oder 6 wird der letzte Skriptlauf jedoch beendet Herunterfahren des Systems oder Neustarten statt Starten von X. Der eigentliche Befehl, der neu startet oder heruntergefahren wird, ist `halt`, denke ich (http://linux.die.net/man/8/halt). PID 1, die "init" wäre, ignoriert SIGTERM. LawrenceC vor 7 Jahren 0

1 Antwort auf die Frage

1
grawity

Wenn das Herunterfahren des Computers über die GUI mit dem vom Terminal mit dem Befehl identisch ist:

Dies hängt natürlich von der GUI ab, aber meistens wird eine DBus-Nachricht gesendet, entweder direkt an init oder an etwas wie ConsoleKit / systemd-logind.

Während beide Methoden letztendlich dazu führen, dass init den Herunterfahren-Prozess starten soll, unterscheiden sie sich hauptsächlich in der Art der verwendeten Autorisierung, z. B. das Herunterfahren über systemd-logind kann von jedem an der Konsole angemeldeten Benutzer initiiert werden, während der shutdownBefehl normalerweise nur root ist .

(Gleiches gilt jedoch nicht für systemctl poweroffeinen GUI-ähnlichen Mechanismus als shutdown.)

Empfängt der init-Prozess ein Signal wie SIGPWR oder SIGTERM oder wird es anders heruntergefahren? Ich hoffe du kannst helfen. Vielen Dank.

Dies hängt natürlich vom Init-System ab, aber meistens wird eine IPC-Nachricht entweder über D-Bus, einen einfachen Unix-Socket oder eine Named Pipe gesendet.

  • systemd hat D-Bus und /run/systemd/privateals Fallback;

  • Upstart hat D-Bus und anscheinend /run/initctlauch;

  • SysV init hat /dev/initctlmanchmal /etc/.initctlin letzter Zeit /run/initctl.

(SIGPWR hat eine andere Bedeutung - es informiert init lediglich über einen Stromausfall, ohne ausdrücklich eine Aktion anzufordern.)

Vielen Dank für die Antwort. Könnten Sie bitte noch eins beantworten? Ich erstelle ein einfaches Programm und führe den init-Prozess als unterschiedlichen Benutzer aus. Was wäre der einfachste Weg, um es herunterzufahren? user590536 vor 7 Jahren 0