Die systemd-Funktion ersetzt die älteren System-V-Initialisierungsskripte aus früheren Versionen. Der Systemd ist eine ereignisgesteuerte Einrichtung, die es ermöglicht, nicht abhängige Subsysteme parallel zu starten, zu steuern oder zu stoppen. Hier erklären wir, wie man ein benutzerdefiniertes Skript zur systemd-Einrichtung hinzufügt.
1. Schreiben und debuggen Sie das benutzerdefinierte Skript
Typischerweise wird ein systemd-Skript als Shell-Skript geschrieben. Beginnen Sie mit dem Schreiben Ihres benutzerdefinierten Skripts unter Verwendung der üblichen Konventionen. Wir nennen unser Skript my-custom-script.sh und es ist unkompliziert:
#!/bin/sh echo I am a custom script
2. Das Skript muss ausführbar sein
Machen wir das Skript ausführbar:
# chmod 0755 my-custom-script.sh
3. Beschreiben Sie das benutzerdefinierte Skript für systemd
Wenn das Skript manuell geschrieben und getestet wurde, kann das Skript dem systemd-System beschrieben werden. Dazu wird eine [name].service-Datei benötigt. Die Syntax verwendet das für Konfigurationsdateien übliche INI-Format. Um unser Beispiel fortzusetzen, benötigen wir eine my-custom-script.service-Datei. Die ausführbare Datei wird bei jedem Start des Dienstes genau einmal ausgeführt. Der Dienst wird erst gestartet, wenn die Netzwerkschicht hochgefahren und stabil ist:
# This is my-custom-script.service, which describes the my-custom-script.sh file [Unit] Description=This is executed on shutdown or reboot DefaultDependencies=no Wants=network-pre.target # (if network is required before running the script) Before=network-pre.target shutdown.target reboot.target halt.target # Defines the order in which units are stoped. #(REQUIRED) [Service] Type=oneshot # enables specifying multiple custom commands that are then executed sequentially. (REQUIRED) RemainAfterExit=true # required by the oneshot setting (REQUIRED) Environment=ONE='one' "TWO='2" # you can set some environment variables, that may be necessary to pass as arguments ExecStart=/bin/true # because is a shutdown script nothing is done when this service is started ExecStop=/bin/bash /usr/local/bin/my-custom-script.sh ${ONE} ${TWO} # < --*********** change to the script full path ************ (REQUIRED) TimeoutStopSec=1min 35s # Configures the time to wait for stop. [Install] WantedBy=multi-user.target # When this unit is enabled, the units listed in WantedBy gain a Want dependency on the unit. (REQUIRED)
4. Platzieren Sie die Dienstdatei im Verzeichnis der erwarteten Dienstsammlung
Lassen Sie uns das benutzerdefinierte Skript im Verzeichnis der Dienstsammlung ablegen, d. h. /etc/systemd/system/ :
# cp my-custom-script.sh /etc/systemd/system/
5. Aktivieren Sie das Skript für zukünftige Neustarts
Ähnlich wie bei chkconfig aus früheren Versionen muss der Dienst aktiviert werden. Da ein neuer Dienst hinzugefügt wurde, benachrichtigen Sie den systemd-Daemon, sich neu zu konfigurieren:
# systemctl enable my-custom-script.service # systemctl daemon-reload