GNU/Linux >> Linux Esercitazione >  >> Linux

Modo corretto di usare Ubuntu systemctl per controllare Systemd

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 il start 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?


Linux
  1. Gestisci l'avvio usando systemd

  2. Utilizzo del comando systemctl per gestire le unità systemd

  3. Come posso configurare un servizio systemd per il riavvio periodico?

  4. Systemd:utilizzo sia di After che di Requires

  5. Modo corretto di utilizzare OnFailure in systemd

Come abilitare o disabilitare i servizi in Ubuntu Systemd/Upstart

Servizi di elenco su Ubuntu 20.04

Utilizzo delle funzionalità di systemd per proteggere i servizi

Come riavviare i servizi sulla riga di comando di Ubuntu

Come configurare l'esecuzione automatica di uno script Python utilizzando Systemd

Ubuntu:avvia, arresta, riavvia i servizi