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.