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.servicePer riavviare più servizi, aggiungi il nome di ciascun servizio dopo ricomincia comando con uno spazio.
sudo systemctl riavviare ssh.service smbd.serviceAltri 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 / sistemaPuoi vedere i file di configurazione di diversi servizi. Apriamo il ssh.service file utilizzando il file nano editore.
sudo nano / lib / systemd / sistema / ssh.serviceQui 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 systemctlAltre 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.serviceAggiungere la riga seguente nella sezione [Unità].
Parte di =ssh.servizio
Salvare il file ed eseguire il comando daemon-reload.
sudo ricarica del demone systemctlOra 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.