GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come eseguire lo script della shell come servizio Systemd in Linux

Systemd è un gestore di servizi che fornisce funzionalità di gestione di demoni, tracciamento dei processi, montaggio, montaggio automatico. Utilizza un gruppo di controllo Linux per gestire l'attività. Sostituisce il vecchio initd ed è disponibile nelle distribuzioni Debian, Fedora, RedHat, Ubuntu, centos, arch Linux.

In questo articolo, ti mostrerò come creare un servizio usando systemd. Creerò uno script manuale che agirà come un processo per trovare l'utilizzo del disco del sistema Linux.

Iniziamo. Crea uno script bash che reindirizza la data e l'utilizzo del disco in un file. Puoi creare file in qualsiasi posizione. Qui creerò nella directory eseguibile /usr/bin

$ sudo vim /usr/bin/script.sh

Copia e incolla il seguente script e salva il file.

#!/bin/bash

# Script generates disk utilization by the system and store in a file

while true

do

date >> /var/storage-monitor.txt

sudo du -sch / >> /var/storage-monitor.txt

sleep 120

done

Rendi il file eseguibile eseguendo il comando seguente.

$ chmod +x /usr/bin/script.sh

Ora, creiamo un servizio per l'esecuzione dello script. Basta creare un file nella directory seguente. Nota che puoi fornire qualsiasi nome ma deve terminare con .service extension.

$ vim /etc/systemd/system/monitor-disk.service

E aggiungi quanto segue,

[Unit]

Description=My disk monitoring service

Documentation=https://www.kernel.org/

#After=networking.service

[Service]

Type=simple

User=root

Group=root

TimeoutStartSec=0

Restart=on-failure

RestartSec=30s

#ExecStartPre=

ExecStart=/usr/bin/script.sh

SyslogIdentifier=Diskutilization

#ExecStop=

[Install]

WantedBy=multi-user.target

Spiegazione

  • La sezione [Unità] è composta da descrizione, dettagli della documentazione. Qui ho menzionato "Dopo" che afferma che il servizio che creeremo deve essere prima in esecuzione.
  • La sezione [Servizio] definisce il tipo di servizio, nome utente, gruppo, cosa fare in caso di errore, timeout di riavvio. Il principale è "ExecStart" che dice di avviare il nostro file di script. Puoi anche definire "ExecStartPre" per definire qualsiasi cosa prima del file di script effettivo. 'SyslogIdentifier' è la parola chiave per identificare il nostro servizio in syslog. Allo stesso modo, ExecStop è l'istruzione per dire cosa fare per interrompere il servizio.
  • La sezione [Installa] viene utilizzata per definire diversi livelli di destinazione nel sistema.

Basta salvare il file e avviare il servizio utilizzando il comando systemctl.

$ systemctl start monitor-disk.service

Controllare lo stato del servizio utilizzando il comando systemctl status. Puoi anche vedere il nome del servizio, il modulo del file in cui è caricato il servizio systemd, la documentazione, il processo in esecuzione e i registri.

$ systemctl status monitor-disk.service

Verifica che lo script funzioni correttamente esaminando il file definito nel file di script.

$ cat /var/storage-monitor.txt

Puoi anche controllare la funzione di abilitazione e disabilitazione di systemd manager.

$ systemctl enable monitor-disk.service
$ systemctl disable monitor-disk.service

Inoltre, verifica arrestando e riavviando il servizio. Nessun errore dovrebbe essere generato.

$ systemctl stop monitor-disk.service
$ systemctl restart monitor-disk.service

Systemd abilita anche l'accesso predefinito a syslog. Quindi, puoi visualizzare il registro live del servizio usando il comando seguente. Cerca la parola chiave "SyslogIdentifier=Diskutilization"

hai negato nel file di servizio sopra.

$ tail -f /var/log/syslog

Conclusione

Questo articolo mostra come eseguire il tuo script di shell come servizio systemd. Ci auguriamo che tu abbia imparato a creare il tuo servizio. Non esitare a inviare il tuo feedback.


Ubuntu
  1. Come creare un servizio Systemd in Linux

  2. Come eseguire uno script??

  3. Come cambiare una parola in un file con lo script della shell linux

  4. Come reindirizzare l'output del servizio systemd su un file

  5. Come eseguire uno script con systemd subito prima dell'arresto?

Come eseguire il comando / script della shell di Linux in background

Come eseguire il file Jar in Ubuntu Linux

Come eseguire uno script all'avvio in Debian 11

Come creare ed eseguire uno script Shell in Ubuntu 20.04 LTS

Come eseguire i comandi del file .sh tutto in una volta in Linux

Come eseguire lo script della shell come servizio SystemD in Linux