GNU/Linux >> Linux Esercitazione >  >> Cent OS

come aggiungere uno script personalizzato al systemd in CentOS/RHEL 7

La funzione systemd sostituisce i precedenti script di inizializzazione System-V delle versioni precedenti. systemd è una struttura basata su eventi che consente di avviare, controllare o arrestare in parallelo sottosistemi non dipendenti. Qui spieghiamo come aggiungere uno script personalizzato alla funzione systemd.

1. Scrivi ed esegui il debug dello script personalizzato

Tipicamente uno script systemd viene scritto come uno script di shell. Inizia scrivendo il tuo script personalizzato usando le normali convenzioni. Chiameremo il nostro script my-custom-script.sh ed è semplice:

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

Lo script deve essere eseguibile.

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

2. Descrivi lo script personalizzato su systemd

Con lo script scritto e testato manualmente, lo script è pronto per essere descritto nel sistema systemd. Per fare ciò, un [nome].servizio è necessario il file. La sintassi utilizza il formato INI comunemente utilizzato per i file di configurazione. Continuando il nostro esempio, abbiamo bisogno di un file my-custom-script.service. L'eseguibile verrà eseguito esattamente una volta per ogni avvio del servizio. Il servizio non verrà avviato finché il livello di rete non sarà attivo e stabile.

Crea un nuovo file dell'unità di servizio in /etc/systemd/system/my-custom-script.service con il contenuto seguente. Il nome dell'unità di servizio è definito dall'utente e può essere qualsiasi nome a tua scelta.

# 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. Abilita lo script per futuri riavvii

Simile al chkconfig delle versioni precedenti, il servizio deve essere abilitato. Poiché è stato aggiunto un nuovo servizio, notifica al demone systemd di riconfigurarsi:

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


Cent OS
  1. Come configurare il demone autofs su CentOS 7/Rhel 7

  2. CentOS / RHEL 7:come creare uno script personalizzato da eseguire automaticamente durante l'avvio

  3. Come eseguire il comando Pstack su CentOS/RHEL

  4. Come aggiungere supporto linguistico aggiuntivo in CentOS/RHEL

  5. Come aggiungere uno script personalizzato a systemd in CentOS/RHEL 7

Come aggiungere un utente a un gruppo su RHEL 8 / CentOS 8

Come abilitare il repository EPEL su RHEL 8 / CentOS 8 Linux

Come installare/aggiornare Systemd su RHEL/CentOS 7

CentOS / RHEL 7:come controllare lo stato di un servizio utilizzando systemd

CentOS / RHEL:come aggiungere una nuova partizione di swap

Come aggiungere spazio di scambio su server Linux (CentOS/RHEL) al volo