- - Ausführen von Skripten und Befehlen zum Anhalten und Fortsetzen unter Linux

Ausführen von Skripten und Befehlen zum Anhalten und Fortsetzen unter Linux

Der beste Weg, um Skripte und Befehle auszuführenDas Anhalten und Fortsetzen unter Linux vor dem Anhalten (oder nach dem Fortsetzen) ist die Verwendung des Systems systemd init. Dies liegt an der Tatsache, dass das Init-System direkt mit dem Kernel und den Energiesystemen interagiert. Wenn Sie lernen, mit diesem Tool zu arbeiten, können alle Benutzer viel Kontrolle über ihr Linux-Betriebssystem erlangen.

Bitte haben Sie Verständnis dafür, dass Sie mit dem Init herumspielenSystem auf Ihrem PC kann gefährlich sein, 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 diesystemd init system. Einige verwenden Emporkömmling oder etwas ganz anderes. In diesem Tutorial konzentrieren wir uns auf systemd, da es das am häufigsten verwendete Initiierungssystem ist. Wenn Sie diese Aufgabe für etwas ausführen möchten, das nicht den in diesem Artikel beschriebenen Anforderungen entspricht, lesen Sie die Anweisungen im Handbuch Ihres Betriebssystems.

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

Ausführen eines Befehls vor dem Anhalten

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

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

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

Fügen Sie den Shebang an den Anfang des Skripts. Dies hinzuzufügen ist wichtig, und ohne dies kann der Interpreter den Code und die Befehle nicht richtig lesen.

#!/bin/bash/

Der nächste Teil des Skripts ist das "Wenn". Dies teilt dem Stromversorgungssystem mit, dass etwas passieren sollte, wenn das System wegen Unterbrechung ausfällt. Fügen Sie den folgenden Code ein:

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

Veränderung sh /path/to/script/to/run.sh Klicken Sie im Skript auf das, was Sie auf Ihrem Linux-PC (oder -Server) ausführen möchten, bevor das System zum Anhalten herunterfährt. Denken Sie daran, dass die Zeile direkt nach "if" nicht sein muss sh /path/to/script/to/run.sh. Sie können damit auch verschiedene Befehle ausführen. Solange bash es als Befehl erkennen kann, wird es ausgeführt.

Der letzte Teil des Skripts "before suspend" besteht darin, den Teil "else if" hinzuzufügen. Dieser Aspekt des Skripts muss nicht geändert werden, da wir uns in diesem Beispiel Sorgen machen, etwas zu tun Vor Das System fällt aus und nicht, wenn es wieder aufwacht.

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

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

Ausführen eines Befehls nach dem Fortsetzen

Das Ausführen eines Befehls nach dem Fortsetzen funktioniert ähnlichLaufen etwas vor dem Anhalten. 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 einfügen.

Um ein Skript nach dem Lebenslauf zu erstellen, fügen Sie zuerst den Shebang als erste Zeile hinzu.

#!bin/bash

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

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

Wenn Sie dieses Codebit 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

Es ist wieder in Ordnung, irgendetwas 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: einervor der Unterbrechung und eine bei der Wiederaufnahme ist es möglich. Es bedeutet lediglich, das Skript anzupassen und Zeilen sowohl unter der "if" -Zeile als auch unter der "elseif" -Zeile hinzuzufügen.

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

#!/bin/bash

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

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

Ersetzen Sie unter if "# replace with command" durch einen beliebigen Befehl, den Sie ausführen möchten, bevor das System ausfällt. 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. Bevor sie ausgeführt werden kann, müssen Sie jedoch die Berechtigungen aktualisieren. Öffne ein Terminal und erhalte 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.

Bemerkungen