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

Comment ajouter un script personnalisé à 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

2. Le script doit être exécutable

Rendons le script exécutable :

# chmod 0755 my-custom-script.sh

3. 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 fichier [nom].service 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 :

# 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. Placez le fichier de service dans le répertoire de collecte des services attendus

Plaçons le script personnalisé dans le répertoire de la collection de services, c'est-à-dire /etc/systemd/system/ :

# cp my-custom-script.sh /etc/systemd/system/

5. 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. comment ajouter un script personnalisé au systemd dans CentOS/RHEL 7

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

  3. Comment ajouter une prise en charge de langue supplémentaire dans CentOS/RHEL

  4. Comment déboguer le processus de démarrage systemd dans CentOS/RHEL 7 et 8

  5. CentOS / RHEL :Comment ajouter des règles iptable

Comment installer Dropbox sur RHEL 8 / CentOS 8

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

Comment installer la boussole sur RHEL 8 / CentOS 8

Comment installer Puppet sur RHEL 8 / CentOS 8

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

CentOS / RHEL :Comment ajouter une nouvelle partition de swap