Systemd porta il concetto di unità systemd in Linux. Prua, testa.g., unità di servizio, unità di destinazione, unità di montaggio ecc. sono tipi di unità con estensione file come .servizio, .bersaglio, .montare rispettivamente. Il file di configurazione che rappresenta queste unità è memorizzato nelle directory: /usr/lib/systemd/system/, /run/systemd/system/, /etc/systemd/system/
Le versioni precedenti di Red Hat Enterprise Linux (RHEL) utilizzavano script init. Questi script sono stati scritti in BASH e si trovano nella directory “/etc/rc.d/init.d/”. Questi sono script usati per controllare i servizi e i demoni. Successivamente in RHEL 7, sono state introdotte le unità di servizio per sostituire gli script di inizializzazione. Fedora, che è un sistema operativo upstream di Red Hat Enterprise Linux, ha iniziato a utilizzare systemd dalla versione 15 di Fedora.
Le unità di servizio hanno .le estensioni dei file di servizio e hanno ruoli simili agli script di inizializzazione. "Systemd" utilizza l'utilità "systemctl" per gestire i servizi di sistema. Può essere utilizzato per visualizzare, avviare, interrompere, riavviare, abilitare o disabilitare questi servizi.
Vantaggi di Systemd rispetto al sistema Init
- Con systemd, possiamo dare la priorità ai servizi necessari rispetto ai servizi meno significativi.
- I cgroup vengono utilizzati da systemd per tenere traccia dei processi e controllarne l'esecuzione.ambiente.
- Systemd supporta ancora il vecchio processo di inizializzazione e ha più controllo.
- Systemd è in grado di gestire modifiche dinamiche alla configurazione del sistema.
Cosa tratteremo?
In questa guida impareremo a gestire i processi systemd. Vedremo come abilitare e disabilitare i servizi di avvio all'avvio e come eseguire operazioni di servizio come avvio, arresto, riavvio, ecc. Abbiamo eseguito gli esercizi seguenti su workstation Fedora 30, che saranno più applicabili ad altri sistemi operativi Linux.
Elenca i servizi di avvio all'avvio in Fedora Linux
Il vecchio metodo SysV utilizza il servizio e chkconfig comandi per gestire i servizi. Questi comandi sono ora sostituiti con i comandi systemd come systemctl. Vediamo alcune delle operazioni di "systemctl" su vari servizi in Linux.
1. Per elencare tutti i servizi in esecuzione sul tuo sistema, insieme ai loro stati (abilitati o disabilitati), usa il comando seguente:
$ sudo systemctl list-unit-files --type=service
Un servizio può avere tre stati: 1) abilitato 2) disabilitato 3) statico
Un servizio abilitato ha un collegamento simbolico in a .vuole la directory, mentre un servizio disabilitato non ne ha una. Un servizio statico non ha una sezione di installazione nello script di inizializzazione corrispondente. Quindi, non può essere abilitato o disabilitato.
Per ottenere maggiori dettagli sui servizi, è necessario utilizzare il comando seguente.
$ sudo systemctl -at service
Riepilogo dei nomi delle colonne precedenti:
UNIT - nome dell'unità systemd (qui un nome di servizio).
LOAD - Specificare se l'unità systemd è stata caricata correttamente o meno.
ATTIVO - Stato dell'unità (qui servizio).
SUB - Un sottostato di attivazione di un'unità.
DESCRIZIONE - Una breve informazione sull'unità.
Possiamo anche usare il seguente comando:
$ sudo ls /lib/systemd/system/*.servizioo
$ sudo /etc/systemd/system/*.servizio
Il “/etc/inittab” è ora sostituito da “/etc/systemd/system/” in systemd. Questa directory ora contiene i collegamenti simbolici ai file nella directory “/usr/lib/systemd/system". Gli script di init si trovano in "/usr/lib/systemd/system". Un servizio deve essere mappato a “/etc/systemd/system/” per avviarlo all'avvio del sistema. A questo scopo, il comando systemctl viene utilizzato in Fedora e altri ultimi sistemi Linux.
2. Vediamo l'esempio seguente di abilitazione del servizio httpd:
$ sudo systemctl abilita httpd.servizio
Inoltre, possiamo utilizzare il comando seguente per filtrare tutti i servizi abilitati:
$ sudo systemctl list-unit-files | grep abilitato
oppure usa il comando:
$ sudo systemctl | grep in esecuzione
3. Per elencare tutti i servizi attivi (in esecuzione), utilizzare il comando:
4. Per vedere quali servizi sono abilitati ad avviarsi automaticamente all'avvio del sistema, possiamo anche utilizzare il seguente comando:
$ sudo systemctl list-unit-files --type=service --state=enabled --all
5. Allo stesso modo, possiamo controllare i servizi disabilitati per l'avvio all'avvio con il comando:
$ sudo systemctl list-unit-files --type=service --state=disabled --all
6. Possiamo anche vedere quanto tempo impiega ogni servizio all'avvio:
$ sudo systemd-analyze colpa
7. Per verificare se un servizio è abilitato per l'avvio automatico all'avvio, utilizzare il comando:
$ sudo systemctl è abilitato xxxMetti il nome del servizio al posto di xxx. E.g., nel caso del servizio httpd il comando sarà:
$ sudo systemctl è abilitato httpd.servizioo
$ sudo systemctl è abilitato httpd
8. Per verificare lo stato di un servizio, utilizzare il comando:
$ sudo systemctl status xxx.servizioAd esempio, per verificare lo stato del servizio sshd:
$ sudo systemctl status sshd.servizio
9. Per verificare se un servizio è in esecuzione o meno, esegui il comando seguente:
$ sudo systemctl è attivo xxx.servizioAd esempio, per controllare lo stato telnet:
$ sudo systemctl è attivo telnet.servizio
10. Per avviare un servizio morto o inattivo, usa il comando:
$ sudo systemctl start xxx.servizioAd esempio, per avviare un servizio sshd:
$ sudo systemctl start sshd
11. Per disabilitare un servizio all'avvio del sistema
Ad esempio, per disabilitare il servizio httpd:
$ sudo systemctl disabilita httpd.servizioo
$ sudo systemctl disabilita httpd
12. Per riavviare un servizio in esecuzione
$ sudo systemctl riavvia xxx.servizioPer riavviare il servizio sshd, usa il comando:
$ sudo systemctl riavvia sshdSe il servizio non è già in esecuzione, verrà avviato.
13. Per ricaricare un servizio in esecuzione
$ sudo systemctl ricarica xxx.servizioAd esempio, ricarica il servizio httpd con:
$ sudo systemctl ricarica httpd.servizio
Questo comando ricarica la configurazione di un servizio specifico. Per ricaricare il file di configurazione dell'unità di systemd, abbiamo bisogno del comando:
$ sudo systemctl daemon-reload14. Per elencare tutte le dipendenze di un servizio:
$ sudo systemctl list-dipendenze xxx.servizioNel caso del servizio httpd, il comando sarà:
$ sudo systemctl list-dipendenze httpd.servizio
Conclusione
In questa guida, abbiamo visto vari modi di gestire i servizi con l'utilità di sistema come abilitare i servizi all'avvio, avviarli e arrestarli, ecc. Se eri abituato al comando di servizio del vecchio Sysvinit, dovresti passare a systemd poiché ha più funzionalità ed è il sistema di inizializzazione predefinito nelle versioni più recenti di Fedora, RHEL e la maggior parte delle altre principali distribuzioni Linux.