Gestire un servizio o un gruppo di servizi in un moderno PC Linux può essere una seccatura, cioè se non sei sicuro di quello che stai facendo. Fortunatamente per te, Ubuntu Systemctl ti copre per gestire i servizi su un PC Linux.
In questo tutorial imparerai come gestire i servizi Systemd su un PC Ubuntu eseguendo diversi systemctl
comandi.
Pronto? È ora di scavare!
Prerequisiti
Questo tutorial sarà una dimostrazione pratica ma non richiede strumenti speciali, purché tu sia su Ubuntu 16 o versione successiva, sei a posto. Questo tutorial utilizza la versione LTS di Ubuntu 20.04.3 per le demo.
Cos'è Ubuntu Systemctl?
Prima di eseguire i comandi systemctl di Ubuntu, scopri prima cosa è Systemctl. Systemctl è un'utilità della riga di comando per controllare e gestire systemd e servizi di sistema.
In poche parole, Systemctl è un pannello di controllo o un gestore di servizi per il sistema systemd init per inizializzare i componenti dopo l'avvio del kernel Linux. Systemctl è una raccolta di librerie, demoni e utilità che puoi utilizzare per gestire i servizi.
Per gestire in modo efficace i servizi, conosci i diversi stati del servizio come segue:
- Abilitato – indica che un servizio è configurato per l'avvio all'avvio del sistema.
- Disabilitato – indica che un servizio è configurato per non avviarsi all'avvio del sistema.
- Attivo – indica che un servizio è attualmente in esecuzione.
- Non attivo – indica che un servizio non è attualmente in esecuzione ma potrebbe avviarsi quando alcune applicazioni tentano 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 che ti preparano alla gestione dei servizi.
Apri il tuo terminale ed esegui il comando seguente per elencare tutte le unità di servizio (list-units
) (attivo, in esecuzione, terminato o non riuscito) con il servizio impostato come tipo di unità (--type=service
).
systemctl list-units --type=service
Scegli uno dei servizi dall'elenco che desideri gestire più avanti in questo tutorial e prendi nota dell'UNITÀ nome (ad es. 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 sugli script della shell di Linux.
Elencare i servizi con uno stato specifico
Invece di elencare tutti i servizi, forse vuoi restringere l'elenco dei servizi. In tal caso, aggiungendo il --state
parametro farà il trucco, poiché filtra i servizi con lo stato specifico che specifichi.
Esegui uno dei comandi seguenti per elencare tutti i servizi attivi (--type=service --state=active
), sia in esecuzione che usciti.
systemctl list-units --type=service --state=active
Allo stesso modo, per elencare solo i servizi usciti 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
Elenco dei servizi abilitati
Oltre a elencare i servizi attivi, in esecuzione e usciti, puoi anche elencare i servizi abilitati e disabilitati collegando il file grep
comando.
Esegui uno dei comandi seguenti per elencare (list-unit-files
) disabled
o enabled
servizi (--type=service
).
## Lists all Enabled services
systemctl list-unit-files --type=service | grep enabled
## Lists all Disabled services
systemctl list-unit-files --type=service | grep disabled
Prendi nota di un servizio abilitato, come mostrato di seguito, poiché ti servirà in seguito per disabilitare un servizio, ma questo tutorial utilizza il acpid.service per demo. L'acpid è un demone estensibile che supporta gli eventi ACPI (Advanced Configuration and Power Interface).
Elenco delle proprietà del servizio
Oltre a elencare i servizi, potresti voler controllare le proprietà di un servizio. Avere informazioni dettagliate sulle proprietà del servizio è utile per la risoluzione dei problemi, i parametri per il processo o il comportamento di riavvio.
Esegui il comando seguente su show
un servizio (acpid.service
) proprietà in un formato chiave=valore.
systemctl show acpid.service
Ora, se stai solo cercando una specifica proprietà del servizio, puoi passare il -p
flag con il nome della proprietà.
Esegui il comando seguente su show
un servizio (acpid.service
) MainPID
proprietà.
systemctl show acpid.service -p MainPID
Gestione di un servizio specifico
Poiché le basi dei servizi di quotazione sono fuori mano, è ora di gestire un servizio specifico (singolo) eseguendo il systemctl stop
e start
comandi.
Il servizio Apache (apache2) viene utilizzato per le seguenti demo, ma puoi gestire liberamente il servizio che hai annotato nella sezione "Elencare tutti i servizi". Ma prima di interrompere o avviare un servizio, devi prima verificarne lo stato.
Esegui il comando seguente su un terminale per visualizzare il apache2
informazioni dettagliate del servizio come il suo status
.
systemctl status apache2
Di seguito, puoi vedere che il servizio apache2 è attivo e in esecuzione.
L'inserimento della password sudo non è necessario per visualizzare lo stato del servizio poiché non si modifica lo stato del servizio. Ma se avvii, arresti o riavvii un servizio, devi anteporre il comando sudo e inserire la password sudo.
Interruzione di un servizio
Forse vuoi interrompere un servizio che è stato lasciato sospeso e ancora in esecuzione in background. In tal caso, il systemctl stop
il comando è ciò di cui hai bisogno. Esegui il systemctl
comando seguente per interrompere il apache2
servizio.
sudo systemctl stop apache2
Se preferisci interrompere più servizi contemporaneamente, specifica ciascun servizio separato da uno spazio, in questo modo:
sudo systemctl stop sshd apache2
. Con questo comando, interromperai entrambi i servizi sshd e apache2 in una volta sola.
Ora esegui il systemctl status
comando come hai fatto in precedenza per verificare se il servizio apache2 si è interrotto.
systemctl status apache2
Di seguito puoi vedere che lo stato del servizio apache2 è cambiato in inattivo (morto) , che indica che il servizio è stato interrotto.
Avvio di un servizio
Ora come si avvia un servizio se si nota che non è affatto in esecuzione? Esegui un comando simile all'arresto del servizio, che è il systemctl start
comando. Esegui il comando seguente su start
il apache2
servizio.
sudo systemctl start apache2
Come interrompere più servizi, puoi anche avviare più servizi in un'unica riga di comando. Sostituisci il
stop
comando con ilstart
comando in questo modo:sudo systemctl start sshd apache2
Ora esegui il systemctl status
comando ancora una volta per verificare se il apache2
il servizio è in esecuzione.
systemctl status apache2
Se vedi attivo (in esecuzione) stato, come mostrato di seguito, quindi sei pronto quando il servizio è tornato operativo.
Se preferisci riavviare il servizio immediatamente senza doverlo prima interrompere. In tal caso, scegli il
systemctl restart
comando invece, in questo modo:sudo systemctl restart apache2
Abilitazione o disabilitazione di un servizio
Forse c'è un servizio particolare che preferisci avviare o impedire all'avvio del sistema. In tal caso, eseguire il systemctl
enable
o disable
il comando è l'approccio migliore.
Il enable
il sottocomando ti consente di configurare le impostazioni di avvio predefinite sul tuo sistema, mentre il disable
subcommand impedisce l'esecuzione di un servizio all'avvio del sistema.
Esegui il systemctl
comando di seguito a disable
il servizio (acpid.service
) che hai annotato nella sezione "Elenco dei servizi abilitati". Inserisci la tua password sudo per autorizzare l'esecuzione del comando.
sudo systemctl disable acpid.service
Ora, poiché acpid.service supporta la configurazione diretta dal sistema operativo e la gestione dell'alimentazione (OSPM); è necessario riattivarlo. Il comando per abilitare il servizio è simile alla disabilitazione di un servizio.
Esegui il systemctl
comando di seguito a enable
acpid.service
. Questo comando registra il servizio alle impostazioni di avvio predefinite sul tuo sistema.
sudo systemctl enable acpid.service
Conclusione
In questo tutorial, hai capito quanto velocemente puoi interrompere, avviare o riavviare i servizi eseguendo Ubuntu systemctl
comandi. Hai anche imparato che il systemctl
comando ti consente di gestire non solo uno ma più servizi contemporaneamente.
Con questa nuova conoscenza, perché non automatizzare il controllo dei servizi nel tuo sistema Ubuntu?