Systemctl è un'utilità utilizzata da systemd per la gestione del sistema e del gestore dei servizi. Molte moderne distribuzioni Linux come Ubuntu, Debian, Fedora, Linux Mint, OpenSuSE, Redhat hanno adottato systemd come sistema di inizializzazione predefinito.
Utilizzando systemctl puoi avviare, interrompere, ricaricare, riavviare il servizio, elencare le unità, controllare lo stato del servizio, abilitare/disabilitare il servizio, gestire i target (runlevel) e il risparmio energetico.
In questo tutorial, ti mostrerò come utilizzare i comandi systemctl per gestire il servizio systemd in Linux.
1. Systemctl Avvia/Arresta/Riavvia/Ricarica servizio
Per avviare un servizio in Linux, esegui systemctl seguito dal nome del servizio spaziale 'start'.
Esempio:
systemctl start dnsmasq
A differenza del comando service, il comando systemctl start non fornisce alcun output.
Per interrompere un servizio, utilizzare systemctl stop service-name. Ad esempio:
systemctl stop dnsmasq
Per riavviare un servizio, usa systemctl restart nome-servizio.
Esempio:
systemctl restart dnsmasq
Per ricaricare la configurazione del servizio (ad esempio ssh), senza riavviarlo, utilizzare systemctl reload nome-servizio.
Ad esempio:
systemctl reload sshd
2. Systemctl controlla lo stato del servizio
Per vedere se un servizio è in esecuzione o meno, possiamo utilizzare il controllo dello stato systemctl.
systemctl status dnsmasq
3. Seleziona e abilita/disabilita il servizio all'avvio
Per abilitare un servizio all'avvio (corrisponde a 'chkconfig on' nel sistema sysvinit), usa systemctl enable service-name.
Esempio:
systemctl enable dnsmasq.service
Allo stesso modo, i servizi possono essere disabilitati all'avvio, esegui:
systemctl disable dnsmasq.service
Per verificare se un servizio è abilitato all'avvio o meno, esegui:
systemctl is-enabled dnsmasq.service
4. Unità elenco Systemctl
Per elencare tutte le unità in esecuzione, eseguire il comando systemctl senza alcuna opzione. Anche l'opzione list-units fa lo stesso.
systemctl
o
systemctl list-units
Le unità guaste possono essere elencate con l'opzione --failed.
systemctl --failed
Per elencare tutti i servizi attivi, esegui:
systemctl list-units -t service
6. Comandi di riavvio/arresto di Systemctl
Come il comando di spegnimento, il comando systemctl per spegnere, riavviare o ibernare il sistema.
Il comando seguente spegnerà il sistema e spegnerà la macchina e invierà una notifica a tutti gli utenti che hanno effettuato l'accesso.
systemctl poweroff
Il comando seguente spegnerà il sistema ma non spegnerà la macchina. Questo invierà una notifica a tutti gli utenti che hanno effettuato l'accesso.
systemctl halt
Spegnere la macchina ma non invierà alcuna notifica a tutti gli utenti che hanno effettuato l'accesso.
systemctl --no-wall poweroff
Per visualizzare i dettagli di spegnimento, esegui il comando seguente.
journalctl -u systemd-shutdownd
7. Systemclt alla gestione dei sistemi remoti
In genere, tutti i comandi systemctl precedenti possono essere utilizzati per gestire un host remoto con il comando systemctl stesso. Questo utilizzerà ssh per la comunicazione con l'host remoto. Tutto quello che devi fare è aggiungere l'utente e l'host al comando systemctl in questo modo:
systemctl status sshd -H [email protected]
8. Gestione degli obiettivi
Systemd ha un concetto di target che hanno uno scopo simile ai runlevel nel sistema sysVinit.
I runlevel in sysVinit erano principalmente numerici (0,1,2,...). Ecco i runlevel in sysVinit con le loro controparti di sistema:
0 runlevel0.target, poweroff.target
1, s, single runlevel1.target, rescue.target
2, 4 runlevel2.target, runlevel4.target, multi-user.target
3 runlevel3.target, multi-user.target
5 runlevel5.target, graphical.target
6 runlevel6.target, reboot.target
emergency emergency.target
Per modificare l'obiettivo corrente, digita:
systemctl isolate graphical.target
Se vuoi vedere in quale target ti trovi, devi elencare tutte le unità corrispondenti.
systemctl list-units --type=target
Puoi vedere "graphical.target" elencato qui. Questo è ciò che abbiamo cambiato il nostro obiettivo. Ora cambiamo nuovamente il runlevel in multi-user.target e quindi analizziamo questo output:
systemctl isolate multi-user.target
systemctl list-units --type=target
Per elencare la destinazione predefinita, digita:
systemctl get-default
La destinazione predefinita può essere impostata con il comando set-default, digitare:
systemctl set-default graphical.target
Altri utili comandi di sistema
Accesso al sistemad
Il systemd ha un proprio sistema di registrazione chiamato journald. Sostituisce il demone syslog di sysVinit.
journalctl
Per vedere tutti i messaggi di avvio, esegui il comando "journalctl -b".
journalctl -b
Il comando seguente segue i log di sistema in tempo reale (simile a tail -f).
journalctl -f
Per controllare i log specifici per un particolare servizio o eseguibile, usa journalctl come:
journalctl /usr/sbin/dnsmasq
Trova la durata del processo di avvio
Per trovare la durata del processo di avvio del sistema con il seguente comando:
systemd-analyze
Anche il tempo di analisi del sistema mostra le stesse informazioni.
systemd-analyze time
Per stampare un elenco di tutte le unità in esecuzione ordinate in base al tempo impiegato per l'inizializzazione, utilizzare systemd-analyze incolpa.
systemd-analyze blame
Comando Hostnamectl
Per mostrare e modificare il nome host usa il comando hostnamectl.
hostnamectl
Conclusione
In questo tutorial, abbiamo appreso i comandi systemctl per gestire il servizio systemd nelle distribuzioni Linux. Spero che ti sia piaciuto leggere e per favore lascia i tuoi suggerimenti nella sezione commenti qui sotto.
Leggi anche:
- Processo di avvio di Systemd uno sguardo da vicino in Linux
- Colorato! systemd vs sysVinit cheatsheet Linux