Riavvia un servizio utilizzando il comando systemctl restart

Riavvia Un Servizio Utilizzando Il Comando Systemctl Restart



IL systemd è un gestore di servizi di sistema ampiamente utilizzato su Linux. Gestire systemd servizi, il systemctl viene utilizzata l'utilità della riga di comando. Questo strumento viene utilizzato anche per riavviare qualsiasi servizio systemd.

I servizi su Linux vengono gestiti tramite il relativo file di configurazione. Se vengono apportate modifiche al file di configurazione di un servizio, è necessario avviare un riavvio del servizio per applicare le modifiche. Al riavvio del servizio, systemd rivaluta il file di configurazione e applica le modifiche.

In questa guida, spiegherò come utilizzare systemctl per riavviare un servizio in Linux.







Nota: Questa guida include comandi e istruzioni che vengono eseguiti su Ubuntu 22.04. Il comando funzionerà senza problemi sulle distribuzioni fornite con il gestore del servizio systemd.



Il comando systemctl restart

IL ricomincia il comando essenzialmente interrompe un servizio e lo riavvia. Se il servizio o l'unità non è operativa, il comando di riavvio ne avvierà il funzionamento.



Il comando restart non rimuove i processi collegati al servizio. Prendiamo l'esempio dei descrittori di file, che sono identificatori non negativi assegnati dal sistema operativo ai file aperti da un servizio. Se riavvii un servizio, il descrittore di file collegato a quel servizio rimarrà lì durante il processo di riavvio.





Se vuoi eliminare tutti i processi collegati al servizio, devi farlo esplicitamente fermare il servizio e inizio nuovamente.

Come riavviare un servizio

Su Linux è possibile riavviare un servizio utilizzando il file sudo systemctl strumento da riga di comando con ricomincia opzione e specificandone il nome. La sintassi generale è riportata di seguito:



sudo riavvio systemctl [ Nome di Servizio ]

Avrai bisogno sudo privilegi per riavviare un servizio.

Ad esempio, riavviamo il file sss servizio.

sudo systemctl riavviare ssh.service

Per riavviare più servizi, aggiungi il nome di ciascun servizio dopo ricomincia comando con uno spazio.

sudo systemctl riavviare ssh.service smbd.service

Altri comandi di riavvio sono riportati nella tabella seguente:

provare a riavviare Arresta o avvia il servizio o i servizi specificati e se il servizio non è in esecuzione non lo avvia
ricaricare o riavviare Ricarica il servizio o i servizi supportati e, se il servizio non è supportato, riavvialo e attivalo
provare-ricaricare-o-provare-a-riavviare Ricaricare il servizio o i servizi supportati e, se il servizio non è supportato, riavviarlo senza attivarlo

Nei comandi precedenti, il .servizio l'estensione è facoltativa.

Come riavviare automaticamente un servizio

Su Linux, se un servizio fallisce, il file systemd riavviato per impostazione predefinita. Tuttavia, in molti casi, potrebbe essere necessario modificare la modalità di riavvio di un servizio. Ad esempio, potrebbe essere necessaria un'azione manuale durante il processo di debug del servizio personalizzato.

I file dell'unità systemd o i file di servizio si trovano su /etc/systemd/system O /lib/systemd/sistema principalmente a seconda di come viene creato il servizio. Per elencare i file unit su Linux, utilizzare il seguente comando:

l / lib / systemd / sistema

Puoi vedere i file di configurazione di diversi servizi. Apriamo il ssh.service file utilizzando il file nano editore.

sudo nano / lib / systemd / sistema / ssh.service

Qui puoi modificare il Ricomincia collocamento. Per impostazione predefinita, è impostato su in caso di fallimento . Altre opzioni per riavviare un servizio sono elencate di seguito:

  • NO
  • Sempre
  • successo
  • in caso di fallimento
  • on-anormale
  • on-abort
  • cane da guardia

Un'altra opzione nel file di servizio dell'unità è RiavviaSec che viene utilizzato per specificare il numero di secondi dopo i quali il servizio verrà riavviato.

[ Servizio ]

Ricomincia =sempre

RiavviaSec = 5

Queste istruzioni indicano che il servizio si riavvierà all'avvio e, se interrotto, verrà riavviato dopo 5 secondi.

Dopo aver modificato l'impostazione, eseguire il comando seguente per applicare le modifiche.

sudo demone di ricarica systemctl

Altre impostazioni importanti da prendere in considerazione sono InizioLimiteIntervalloSec E StartLimitBurst . Queste opzioni sono utili per impostare il tempo massimo e il numero massimo di tentativi per riavviare un servizio.

[ Unità ]

InizioLimiteIntervalloSec = 300

StartLimitBurst = 4

L'istruzione precedente indica che systemd smetterà automaticamente di tentare di riavviare un servizio se non si avvia dopo 300 secondi e 4 tentativi.

Per verificare se il servizio si riavvia dopo 5 secondi o meno, termina il servizio utilizzando il PID del servizio e il file uccisione comando.

sudo uccisione -9 [ PID ]

Dopo 5 secondi il servizio verrà riavviato; Usa il journalctl comando per verificare lo stato del file ssh.service .

journalctl -In ssh.service

Come riavviare un servizio al riavvio del servizio dipendente

Su Linux, molti servizi sono interdipendenti e, analogamente, devono essere riavviati quando viene riavviato un servizio dipendente.

Sono disponibili tre diverse opzioni nel file di servizio dell'unità per riavviare un servizio, con il riavvio di un servizio dipendente.

  • Parte di
  • Si lega a
  • Richiede

Tutte queste opzioni eseguono la stessa attività.

Facciamo un esempio di ssh.service che dipende da apparmor.service; un modulo di sicurezza Linux per fornire l'accesso necessario. Per elencare le dipendenze di un servizio in Linux utilizzare systemctl con dipendenze delle liste comando e nome del servizio.

systemctl elenco-dipendenze ssh.service

Pertanto, se desideri riavviare ssh.service quando riavvii apparmor.service, devi includere l'opzione PartOf, BindsTo o Requires insieme al nome del servizio nella sezione [Unit] del file apparmor.service.

Apri il file apparmor.service.

sudo nano / lib / systemd / sistema / apparmor.service

Aggiungere la riga seguente nella sezione [Unità].

Parte di =ssh.servizio

Salvare il file ed eseguire il comando daemon-reload.

sudo ricarica del demone systemctl

Ora riavvia il ssh.service e poi controlla il apparmor.service tronco d'albero.

Noterai il apparmor.service riavviato allo stesso tempo il ssh.service riavviato.

Conclusione

Per riavviare uno o più servizi su Linux, il file systemctl il comando viene utilizzato con il file ricomincia opzione. IL systemctl è un'utilità della riga di comando utilizzata per gestire i servizi systemd. IL ricomincia l'opzione avvia un servizio e poi lo interrompe, attivando un servizio inattivo. Tuttavia, puoi riavviare un servizio senza attivarlo utilizzando il file provare a riavviare opzione.