GNU/Linux >> Tutoriels Linux >  >> Cent OS

comment ajouter un script personnalisé au systemd dans CentOS/RHEL 7

La fonction systemd remplace les anciens scripts d'initialisation System-V des versions antérieures. Le systemd est une fonction événementielle qui permet de démarrer, de contrôler ou d'arrêter des sous-systèmes non dépendants en parallèle. Nous expliquons ici comment ajouter un script personnalisé à l'installation systemd.

1. Écrire et déboguer le script personnalisé

Généralement, un script systemd est écrit sous la forme d'un script shell. Commencez par écrire votre script personnalisé en utilisant les conventions normales. Nous appellerons notre script my-custom-script.sh et c'est simple :

#!/bin/sh
echo "I am a custom script" > /var/tmp/script.out
echo "The script was run at : `date`" >> > /var/tmp/script.out

Le script doit être exécutable.

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

2. Décrire le script personnalisé à systemd

Avec le script écrit et testé manuellement, le script est prêt à être décrit au système systemd. Pour ce faire, un [nom].service fichier est nécessaire. La syntaxe utilise le format INI couramment utilisé pour les fichiers de configuration. Poursuivant notre exemple, nous avons besoin d'un fichier my-custom-script.service. L'exécutable s'exécutera exactement une fois à chaque démarrage du service. Le service ne sera pas démarré tant que la couche réseau n'est pas opérationnelle et stable.

Créez un nouveau fichier d'unité de service dans /etc/systemd/system/my-custom-script.service avec le contenu ci-dessous. Le nom de l'unité de service est défini par l'utilisateur et peut être n'importe quel nom de votre choix.

# 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. Activer le script pour les futurs redémarrages

Semblable au chkconfig des versions antérieures, le service doit être activé. Puisqu'un nouveau service a été ajouté, demandez au démon systemd de se reconfigurer :

# systemctl enable my-custom-script.service
# systemctl daemon-reload


Cent OS
  1. CentOS / RHEL 7 :Comment changer l'identifiant de la machine

  2. CentOS / RHEL :Comment changer l'UUID du système de fichiers

  3. Comment changer les étiquettes du système de fichiers dans CentOS/RHEL

  4. Comment ajouter/supprimer une archive locale dans CentOS/RHEL 5,6

  5. Comment désactiver le 'lvm2-lvmetad.socket/service' sur CentOS/RHEL 7

Comment ajouter un utilisateur à un groupe sur RHEL 8 / CentOS 8

Comment activer le référentiel EPEL sur RHEL 8 / CentOS 8 Linux

Comment installer/mettre à niveau Systemd sur RHEL/CentOS 7

CentOS / RHEL 7 :Comment vérifier l'état d'un service à l'aide de systemd

CentOS / RHEL :Comment ajouter une nouvelle partition de swap

Comment ajouter un espace d'échange sur les serveurs Linux (CentOS/RHEL) à la volée