Gestire un servizio o un gruppo di servizi su un moderno PC Linux può essere complicato, specialmente se non si sa esattamente cosa si sta facendo. Per fortuna, Ubuntu Systemctl ti offre tutto il necessario per gestire i servizi su un PC Linux.
In questo tutorial, imparerai come gestire i servizi Systemd su un PC Ubuntu eseguendo diversi comandi systemctl
.
Pronto? È il momento di iniziare!
Prerequisiti
Questo tutorial sarà una dimostrazione pratica ma non richiede strumenti speciali. Finché utilizzi Ubuntu 16 o una versione successiva, sei a posto. Questo tutorial utilizza la versione LTS 20.04.3 di Ubuntu per le dimostrazioni.
Cos’è Ubuntu Systemctl?
Prima di eseguire i comandi systemctl su Ubuntu, capiamo cos’è Systemctl. Systemctl è un’utilità da riga di comando per controllare e gestire systemd e i servizi di sistema.
In breve, Systemctl è un pannello di controllo o un gestore di servizi per il sistema init di systemd per inizializzare i componenti dopo l’avvio del kernel Linux. Systemctl è una raccolta di librerie, daemon e utility che puoi utilizzare per gestire i servizi.
Per gestire efficacemente i servizi, conosci i diversi stati dei servizi come segue:
- Abilitato – indica che un servizio è configurato per avviarsi quando il sistema si avvia.
- Disabilitato – indica che un servizio è configurato per non avviarsi quando il sistema si avvia.
- Attivo – indica che un servizio è attualmente in stato di esecuzione.
- Inattivo – indica che un servizio non è attualmente in esecuzione ma potrebbe avviarsi quando qualche applicazione tenta di avviare quel servizio.
Elenco di tutti i servizi
Ora che conosci i diversi stati dei servizi, forse vuoi vedere un elenco di tutti i servizi sul tuo PC Ubuntu. L’elenco di tutti i servizi fornisce alcune informazioni utili per la gestione dei servizi.
Apri il terminale e esegui il comando sottostante per elencare tutte le unità di servizio (list-units
) (attive, in esecuzione, uscite o fallite) con il servizio impostato come tipo di unità (--type=service
).
Scegli uno qualsiasi dei servizi dall’elenco che desideri gestire successivamente in questo tutorial e prendi nota del nome dell’UNITÀ (ad esempio, apache2). Premi la barra spaziatrice per scorrere verso il basso o premi il tasto “Q” per uscire dal comando.
A proposito, ecco una buona guida su Scripting della Shell Linux.

Elenco dei servizi con stato specifico
Se invece di elencare tutti i servizi desideri restringere l’elenco, potresti voler filtrare i servizi in base allo stato specifico. In tal caso, l’aggiunta del parametro --state
farà al caso tuo, poiché filtra i servizi con lo stato specifico che specifici.
Esegui uno qualsiasi dei comandi seguenti per elencare tutti i servizi attivi (--type=service --state=active
), sia in esecuzione che terminati.

Allo stesso modo, per elencare solo i servizi terminati o in esecuzione, cambia il valore dello stato da active
a running
o exited
, come mostrato nei comandi seguenti:


Elenco dei servizi abilitati
Oltre all’elenco dei servizi attivi, in esecuzione e terminati, puoi anche elencare i servizi abilitati e disabilitati mediante l’utilizzo del comando grep
.
Esegui uno qualsiasi dei comandi seguenti per elencare i servizi disabilitati
o abilitati
(--type=service
).
Fai attenzione a un servizio abilitato, come mostrato di seguito, perché ne avrai bisogno più avanti per disabilitare un servizio, ma questo tutorial utilizza il servizio acpid.service per la demo. Acpid è un demone estensibile che supporta gli eventi del Advanced Configuration and Power Interface (ACPI).

Proprietà del Servizio in Elenco
Oltre all’elenco dei servizi, potresti voler controllare le proprietà di un servizio. Avere conoscenza delle proprietà del servizio è utile per la risoluzione dei problemi, i parametri del processo o il comportamento del riavvio.
Esegui il comando qui sotto per mostrare
le proprietà di un servizio (acpid.service
) in formato chiave=valore.

Ora, se stai cercando solo una specifica proprietà del servizio, puoi passare il flag -p
con il nome della proprietà.
Esegui il comando seguente per mostrare
la proprietà MainPID
di un servizio (acpid.service
).

Gestione di un Servizio Specifico
Dal momento che le basi per l’elenco dei servizi sono state affrontate, è ora di gestire un servizio specifico (singolo) eseguendo i comandi systemctl stop
e start
.
Il servizio Apache (apache2) viene utilizzato per le seguenti dimostrazioni, ma puoi gestire liberamente il servizio che hai annotato nella sezione “Elenco di tutti i servizi”. Tuttavia, prima di arrestare o avviare un servizio, è necessario verificare lo stato del servizio.
Esegui il comando seguente su un terminale per visualizzare le informazioni dettagliate sul servizio apache2
, come il suo stato
.
Sotto puoi vedere che il servizio apache2 è attivo e in esecuzione.

Non è necessario inserire la password sudo per visualizzare lo stato del servizio poiché non stai modificando lo stato del servizio. Ma se avvii, arresti o riavvii un servizio, devi anteporre il comando sudo e inserire la password sudo.
Arrestare un servizio
Forse vuoi fermare un servizio che è stato lasciato in sospeso e che continua a essere in esecuzione in background. In tal caso, il comando systemctl stop
è ciò di cui hai bisogno. Esegui il comando systemctl
qui sotto per fermare il servizio apache2
.
Se preferisci fermare contemporaneamente più servizi, specifica ciascun servizio separato da spazio, così:
sudo systemctl stop sshd apache2
. In questo comando, fermerai contemporaneamente i servizi sshd e apache2.
Ora esegui nuovamente il comando systemctl status
come hai fatto in precedenza per verificare se il servizio apache2 si è fermato.
Puoi vedere qui sotto che lo stato del servizio apache2 è cambiato in inactive (dead), il che indica che il servizio è stato arrestato.

Avviare un servizio
Ora come si avvia un servizio se ti accorgi che non sta funzionando affatto? Esegui un comando simile a quello di arresto del servizio, che è il comando systemctl start
. Esegui il comando seguente per avviare
il servizio apache2
.
Come per l’arresto di più servizi, puoi anche avviare più servizi in una singola riga di comando. Sostituisci il comando
stop
con il comandostart
in questo modo:sudo systemctl start sshd apache2
Ora esegui nuovamente il comando systemctl status
per verificare se il servizio apache2
è in esecuzione.
Se vedi lo stato attivo (in esecuzione), come mostrato di seguito, allora sei a posto poiché il servizio è di nuovo attivo.

Se preferisci riavviare il servizio senza prima fermarlo. In tal caso, opta per il comando
systemctl restart
invece, così:sudo systemctl restart apache2
Abilitare o Disabilitare un Servizio
Forse c’è un particolare servizio che preferisci avviare o impedire di avviare all’avvio del sistema. In tal caso, eseguire il comando systemctl
enable
o disable
è il miglior approccio.
Il sottocomando enable
ti consente di configurare le impostazioni di avvio predefinite sul tuo sistema, mentre il sottocomando disable
impedisce a un servizio di avviarsi all’avvio del sistema.
Esegui il comando systemctl
di seguito per disabilitare
il servizio (acpid.service
) che hai notato nella sezione “Elenco dei servizi abilitati”. Inserisci la tua password di sudo per autorizzare l’esecuzione del comando.

Ora, poiché il servizio acpid.service supporta la configurazione diretta del sistema operativo e la gestione dell’alimentazione (OSPM); è necessario riabilitarlo. Il comando per abilitare il servizio è simile a quello per disabilitare un servizio.
Esegui il comando systemctl
di seguito per abilitare
il acpid.service
. Questo comando registra il servizio alle impostazioni predefinite di avvio sul tuo sistema.

Conclusione
In questo tutorial, hai capito quanto rapidamente puoi arrestare, avviare o riavviare i servizi eseguendo i comandi systemctl
di Ubuntu. Hai anche appreso che il comando systemctl
ti consente di gestire non solo un singolo servizio, ma anche più servizi contemporaneamente.
Con questa nuova conoscenza, perché non automatizzare il controllo dei servizi nel tuo sistema Ubuntu?