Comandi Systemctl per gestire il servizio Systemd
Systemctl è un’utilità utilizzata da systemd per gestire il sistema e il gestore dei servizi. Molte distribuzioni Linux moderne come Ubuntu, Debian, Fedora, Linux Mint, OpenSuSE, Redhat hanno adottato systemd come sistema di init predefinito.
Utilizzando systemctl è possibile avviare, arrestare, ricaricare, riavviare il servizio, elencare le unità, controllare lo stato del servizio, abilitare/disabilitare il servizio, gestire gli obiettivi (runlevel) e la gestione dell’alimentazione.
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, eseguire systemctl seguito dal nome del servizio spaziale “start”.
Esempio:
systemctl start dnsmasq
A differenza del comando service, il comando systemctl start non produce alcun output.
Per arrestare un servizio, utilizzare systemctl stop service-name. Per esempio:
systemctl stop dnsmasq
Per riavviare un servizio, utilizzare systemctl restart service-name.
Esempio:
systemctl restart dnsmasq
Per ricaricare la configurazione del servizio (ad esempio ssh) senza riavviarlo, utilizzare systemctl reload service-name.
Per 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 di systemctl.
systemctl status dnsmasq
3. Selezionare e abilitare/disabilitare il servizio all’avvio
Per abilitare un servizio all’avvio (corrisponde a “chkconfig on” in sysvinit), utilizzare systemctl enable service-name.
Esempio:
systemctl enable dnsmasq.service
Allo stesso modo, i servizi possono essere disabilitati all’avvio, eseguire:
systemctl disable dnsmasq.service
Per verificare se un servizio è abilitato all’avvio o meno, eseguire:
systemctl is-enabled dnsmasq.service
4. Unità elenco Systemctl
Per elencare tutte le unità in esecuzione, eseguire il comando systemctl senza alcuna opzione. L’opzione list-units fa la stessa cosa.
systemctl
o
systemctl list-units
Le unità fallite possono essere elencate con l’opzione –failed.
systemctl --failed
Per elencare tutti i servizi attivi, eseguire:
systemctl list-units -t service
6. Comandi di riavvio/arresto di Systemctl
Come il comando shutdown, il comando systemctl per spegnere, riavviare o ibernare il sistema.
Il seguente comando spegnerà il sistema e spegnerà la macchina e invierà una notifica a tutti gli utenti che hanno effettuato l’accesso.
systemctl poweroff
Il seguente comando spegnerà il sistema ma non fermerà la macchina. Questo invierà una notifica a tutti gli utenti registrati.
systemctl halt
Spegni il dispositivo, ma non invierà alcuna notifica a tutti gli utenti connessi.
systemctl --no-wall poweroff
Per visualizzare i dettagli di spegnimento, eseguire il comando seguente.
journalctl -u systemd-shutdownd
7. Systemclt per gestire i 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 comunicare 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 root@1.2.3.4
8. Gestione degli obiettivi
Systemd ha un concetto di obiettivi con uno scopo simile ai runlevel nel sistema sysVinit.
I runlevel in sysVinit erano per lo più numerici (0,1,2,…). Ecco i runlevel di sysVinit con le loro controparti systemd:
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 il target corrente, digitare:
systemctl isolate graphical.target
Se vuoi vedere in che target ti trovi, devi elencare tutte le unità corrispondenti.
systemctl list-units --type=target
Puoi vedere “graphical.target” elencato qui. Questo è ciò in cui 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, digitare:
systemctl get-default
L’obiettivo predefinito può essere impostato con il comando set-default, digitare:
systemctl set-default graphical.target
Un altro utile comando systemd
Sistema di accesso
Systemd ha il proprio sistema di registrazione chiamato journald. Sostituisce il demone syslog di sysVinit.
journalctl
Per vedere tutti i messaggi di avvio, eseguire il comando “journalctl -b”.
journalctl -b
Il seguente comando segue i log di sistema in tempo reale (simile a tail -f).
journalctl -f
Per controllare i log specifici di un particolare servizio o eseguibile, utilizzare journalctl come:
journalctl /usr/sbin/dnsmasq
Trova la durata del processo di avvio
Per trovare la durata del processo di avvio di systemd con il seguente comando:
systemd-analyze
Anche il tempo di analisi di systemd 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 bias.
systemd-analyze blame
Comando hostnamectl
Per visualizzare e modificare il nome host, utilizzare il comando hostnamectl.
hostnamectl
Conclusione
In questo tutorial, abbiamo imparato 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.