So führen Sie Skripte und Befehle beim Anhalten und Fortsetzen unter Linux aus

Die beste Methode zum Ausführen von Skripten und Befehlen zum Anhalten und Fortsetzen unter Linux vor dem Anhalten (oder nach dem Fortsetzen) ist die Verwendung des systemd-Init-Systems. Dies liegt daran, dass das Init-System direkt mit dem Kernel und den Power-Systemen interagiert. Das Erlernen der Arbeit mit diesem Tool ermöglicht es jedem Benutzer, viel Kontrolle über sein Linux-Betriebssystem zu erlangen.

Bitte haben Sie Verständnis dafür, dass es gefährlich sein kann, mit dem Init-System Ihres PCs herumzuspielen, wenn Sie nicht wissen, was Sie tun. Befolgen Sie die Anweisungen in diesem Tutorial so genau wie möglich, um mögliche Pannen zu vermeiden.

Nicht jede moderne Linux-Distribution unterstützt das systemd-Init-System. Einige verwenden Upstart oder etwas ganz anderes. In diesem Tutorial konzentrieren wir uns auf systemd, da es das gebräuchlichste Initiierungssystem ist. Wenn Sie diese Aufgabe auf etwas ausführen möchten, das nicht das ausführt, was wir in diesem Artikel behandeln, ziehen Sie in Betracht, im Handbuch Ihres Betriebssystems nach Anweisungen zu suchen.

Hinweis: Debian-Benutzer sollten alle Instanzen von usr/lib/systemd/system-sleep durch /lib/systemd/system-sleep/ ersetzen.

Ausführen eines Befehls vor dem Suspend

Um ein Skript vor dem Suspend auszuführen, legen Sie eine beliebige Bash-Skriptdatei im Verzeichnis /usr/lib/systemd/system-sleep/ ab. Die Skripte selbst können alles, aber es gibt eine bestimmte Syntax, die eingehalten werden muss. Öffnen Sie zunächst ein Terminalfenster. Rufen Sie mit sudo -s eine Root-Shell ab.

  So installieren und verwenden Sie den Rapid Photo Downloader unter Linux

Als nächstes öffnen Sie den Nano-Texteditor im System-Sleep-Verzeichnis:

nano /usr/lib/systemd/system-sleep/pre-suspend.sh

Fügen Sie den Shebang am Anfang des Skripts hinzu. Das Hinzufügen ist kritisch, und ohne sie kann der Interpreter den Code und die Befehle nicht korrekt lesen.

#!/bin/bash/

Der nächste Teil des Skripts ist das „if“. Dadurch wird dem Leistungssteuerungssystem mitgeteilt, dass „wenn“ das System kurz vor dem Abschalten steht, etwas passieren sollte. Fügen Sie den folgenden Code ein:

if [ "${1}" == "pre" ]; then
sh /path/to/script/to/run.sh

Ändern Sie sh /path/to/script/to/run.sh im Skript in das, was Sie auf Ihrem Linux-PC (oder Server) ausführen möchten, kurz bevor das System zum Suspend heruntergefahren wird. Denken Sie daran, dass die Zeile direkt nach „if“ nicht sh /path/to/script/to/run.sh sein muss. Sie können dies auch verwenden, um verschiedene Befehle auszuführen. Solange Bash es als Befehl erkennen kann, wird es ausgeführt.

Der letzte Teil des „before suspend“-Skripts besteht darin, den „else if“-Teil hinzuzufügen. Dieser Aspekt des Skripts muss nicht geändert werden, da wir uns in diesem Beispiel darum kümmern, etwas zu tun, bevor das System herunterfährt, und nicht, wenn es wieder aufwacht.

elif [ "${1}" == "post" ]; then
# nothing goes here
fi

Wenn alles zur Datei hinzugefügt wurde, drücken Sie Strg + O, um nano zu speichern.

  So hosten Sie ein Minecraft-Spiel auf einer virtuellen Linux-Maschine

Ausführen eines Befehls nach Wiederaufnahme

Das Ausführen eines Befehls nach dem Resume funktioniert ähnlich wie das Ausführen von etwas vor dem Suspend. Der einzige wirkliche Unterschied besteht darin, dass Sie anstelle eines Befehls nach dem „if“-Teil des Skripts den wichtigsten Teil des Codes nach der „elif“-Zeile erscheinen lassen.

Um ein Post-Resume-Skript zu erstellen, fügen Sie zuerst den Shebang als erste Zeile hinzu.

#!bin/bash

Fügen Sie in der nächsten Zeile den „if“-Teil des Skripts hinzu.

if [ "${1}" == "pre" ]; then
# nothing goes here

Wenn Sie diesen Code in das Bash-Skript eingefügt haben, gehen Sie nach unten und fügen Sie den Abschnitt „else if“ ein.

elif [ "${1}" == "post" ]; then
sh /path/to/script/to/run.sh
fi

Auch hier ist es in Ordnung, alles unter die „elif“-Zeile zu schreiben. Solange es sich um eine normale Befehlsoperation handelt, wird sie von systemd und bash ausgeführt.

Ausführen von Befehlen beim Start und Fortsetzen

Wenn Sie zwei entgegengesetzte Befehle ausführen möchten; eine vor Suspend und eine bei Resume, es ist möglich. Es bedeutet lediglich, das Skript anzupassen und Zeilen sowohl unter der „if“-Zeile als auch unter der „elseif“-Zeile hinzuzufügen.

  So greifen Sie von einem iPad auf einen Remote-Linux-Computer zu

Beginnen Sie wie üblich damit, den Shebang in das Skript für den Dolmetscher zu posten.

#!/bin/bash

Fügen Sie als Nächstes den if-Abschnitt des Codes ein.

if [ "${1}" == "pre" ]; then
# replace with command

Ersetzen Sie unter if „# replace with command“ durch den Befehl, den Sie ausführen möchten, bevor das System herunterfährt. Gehen Sie dann zum Abschnitt „elif“ und machen Sie dasselbe.

elif [ "${1}" == "post" ]; then
#  replace with command
fi

Speichern Sie die Datei mit Strg + O,

Aktualisieren von Berechtigungen und Verwenden des Skripts

Alle erforderlichen Befehle befinden sich in der Skriptdatei, aber bevor sie ausgeführt werden kann, müssen Sie die Berechtigungen aktualisieren. Öffnen Sie ein Terminal und erlangen Sie Root mit: su oder sudo -s. Dann mach:

chmod +x /usr/lib/systemd/system-sleep/pre-suspend.sh

Von nun an sollten bei jedem Anhalten oder Fortsetzen benutzerdefinierte Befehle innerhalb des Skripts ausgeführt werden.

Hinweis: Haben Sie Fragen zu systemd system-sleep? Überprüfen Sie das Handbuch mit man systemd-suspend.service.