Modo Corretto di Utilizzare Ubuntu systemctl per Controllare Systemd

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).

systemctl list-units --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.

Listing All Services (active, running, exited, or failed)

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.

systemctl list-units --type=service --state=active
Listing Services on “active” State

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:

systemctl --type=service --state=running
systemctl --type=service --state=exited
Listing Services on “running” State
Listing Services on “stopped” State

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).

## Elenca tutti i servizi abilitati
systemctl list-unit-files --type=service | grep enabled
## Elenca tutti i servizi disabilitati
systemctl list-unit-files --type=service | grep disabled

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).

Listing Enabled Services

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.

systemctl show acpid.service
Showing Service Properties

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).

systemctl show acpid.service -p MainPID
Showing Specific Service Property

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.

systemctl status apache2

Sotto puoi vedere che il servizio apache2 è attivo e in esecuzione.

Viewing apache2 Service Status

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.

sudo systemctl stop 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.

systemctl status apache2

Puoi vedere qui sotto che lo stato del servizio apache2 è cambiato in inactive (dead), il che indica che il servizio è stato arrestato.

Verifying if apache2 Service is Stopped

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.

sudo systemctl start 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 comando start in questo modo: sudo systemctl start sshd apache2

Ora esegui nuovamente il comando systemctl status per verificare se il servizio apache2 è in esecuzione.

systemctl status apache2

Se vedi lo stato attivo (in esecuzione), come mostrato di seguito, allora sei a posto poiché il servizio è di nuovo attivo.

Starting apache2 service

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.

sudo systemctl disable acpid.service
Disabling a Service

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.

sudo systemctl enable acpid.service
Enabling a Service

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?

Source:
https://adamtheautomator.com/ubuntu-systemctl/