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.