GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

wie man ein benutzerdefiniertes Skript zu systemd in CentOS/RHEL 7 hinzufügt

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" > /var/tmp/script.out
echo "The script was run at : `date`" >> > /var/tmp/script.out

Das Skript muss ausführbar sein.

# chmod 0755 /var/tmp/my-custom-script.sh

2. 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 ein [name].service Datei wird 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.

Erstellen Sie eine neue Service-Unit-Datei unter /etc/systemd/system/my-custom-script.service mit dem folgenden Inhalt. Der Name der Serviceeinheit ist benutzerdefiniert und kann ein beliebiger Name Ihrer Wahl sein.

# 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 /var/tmp/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)

3. 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


Cent OS
  1. So konfigurieren Sie den autofs-Daemon unter CentOS 7/Rhel 7

  2. CentOS / RHEL 7 :So erstellen Sie ein benutzerdefiniertes Skript, das während des Bootens automatisch ausgeführt wird

  3. So ändern Sie die Dateisystembezeichnungen in CentOS/RHEL

  4. So fügen Sie zusätzliche Sprachunterstützung in CentOS/RHEL hinzu

  5. So fügen Sie ein benutzerdefiniertes Skript zu systemd in CentOS/RHEL 7 hinzu

So fügen Sie einen Benutzer zu einer Gruppe auf RHEL 8 / CentOS 8 hinzu

So aktivieren Sie das EPEL-Repository unter RHEL 8 / CentOS 8 Linux

So installieren/aktualisieren Sie Systemd unter RHEL/CentOS 7

CentOS / RHEL 7 :So überprüfen Sie den Status eines Dienstes mit systemd

CentOS / RHEL:So fügen Sie eine neue Swap-Partition hinzu

So fügen Sie Swap Space on the Fly auf Linux-Servern (CentOS/RHEL) hinzu