Služby v systému Linux jsou spravovány prostřednictvím jejich konfiguračního souboru. Pokud jsou v konfiguračním souboru služby provedeny úpravy, je nutné iniciovat restart služby, aby se změny uplatnily. Po restartování služby systemd znovu vyhodnotí konfigurační soubor a použije úpravy.
V této příručce se budu zabývat tím, jak použít systemctl k restartování služby v Linuxu.
Poznámka: Tato příručka obsahuje příkazy a pokyny, které se spouštějí na Ubuntu 22.04. Příkaz bude fungovat bez problémů v distribucích, které jsou dodávány se správcem služeb systemd.
Příkaz systemctl restart
The restartovat příkaz v podstatě zastaví službu a znovu ji spustí. Pokud služba nebo jednotka není funkční, příkaz restart zahájí její činnost.
Příkaz restart neodebere procesy, které jsou propojeny se službou. Vezměte si příklad deskriptorů souborů, což jsou nezáporné identifikátory přiřazené operačním systémem souborům otevřeným službou. Pokud restartujete službu, deskriptor souboru propojený s touto službou tam zůstane během procesu restartování.
Pokud chcete vyprázdnit všechny propojené procesy se službou, musíte to udělat výslovně stop službu a Start to znovu.
Jak restartovat službu
V systému Linux můžete službu restartovat pomocí sudo systemctl nástroj příkazového řádku s restartovat možnost a uvedení jejího názvu. Obecná syntaxe je uvedena níže:
sudo restart systemctl [ Název služby ]
Budete potřebovat sudo oprávnění restartovat službu.
Například restartujeme ssh servis.
sudo systemctl restart ssh.serviceChcete-li restartovat více služeb, připojte každý název služby za restartovat příkaz s mezerou.
sudo systemctl restart ssh.service smbd.serviceDalší příkazy k restartu jsou uvedeny v tabulce níže:
zkuste-restartovat | Zastaví nebo spustí zadanou službu nebo služby a pokud služba neběží, nespustí ji |
reload-or-restart | Znovu načtěte podporovanou službu nebo služby a pokud služba není podporována, restartujte ji a aktivujte |
zkuste-reload-nebo-try-restart | Znovu načtěte podporovanou službu nebo služby a pokud služba není podporována, restartujte ji, aniž byste ji aktivovali |
Ve výše uvedených příkazech je .servis rozšíření je volitelné.
Jak automaticky restartovat službu
Pokud v systému Linux selže služba, pak systemd ve výchozím nastavení jej restartoval. V mnoha případech však může být nutné upravit způsob, jakým se služba restartuje. Například může být potřeba ruční zásah během procesu ladění zakázkové služby.
Soubory jednotek systemd nebo soubory služeb jsou umístěny na /etc/systemd/system nebo /lib/systemd/system hlavně podle toho, jak je služba vytvořena. Chcete-li zobrazit seznam souborů jednotek v systému Linux, použijte následující příkaz:
ls / lib / systemd / SystémMůžete vidět konfigurační soubory různých služeb. Pojďme otevřít ssh.service soubor pomocí nano editor.
sudo nano / lib / systemd / Systém / ssh.serviceZde můžete upravit Restartujte nastavení. Ve výchozím nastavení je nastavena na při selhání . Další možnosti restartování služby jsou uvedeny níže:
- Ne
- vždy
- při úspěchu
- při selhání
- na-nenormální
- při přerušení
- na hlídacím psu
Další možností v souboru služeb jednotky je RestartSec který se používá k určení počtu sekund, po kterých se služba restartuje.
[ Servis ]Restartujte = vždy
RestartSec = 5
Tyto pokyny znamenají, že se služba restartuje při bootování a v případě přerušení se restartuje po 5 sekundách.
Po úpravě nastavení proveďte následující příkaz pro použití změn.
sudo systemctl reload-daemonDalší důležitá nastavení, která je třeba vzít v úvahu, jsou StartLimitIntervalSec a StartLimitBurst . Tyto možnosti jsou užitečné pro nastavení maximální doby a maximálního počtu opakování restartování služby.
[ Jednotka ]StartLimitIntervalSec = 300
StartLimitBurst = 4
Výše uvedená instrukce naznačuje, že systemd automaticky zastaví pokus o restartování služby, pokud se nespustí po 300 sekundách a 4 pokusech.
Chcete-li ověřit, zda se služba restartuje po 5 sekundách nebo ne, ukončete službu pomocí PID služby a zabít příkaz.
sudo zabít -9 [ PID ]Po 5 sekundách bude služba restartována; použít journalctl příkaz ke kontrole stavu ssh.service .
journalctl -v ssh.service
Jak restartovat službu při restartování závislé služby
V Linuxu je mnoho služeb vzájemně závislých a podobně je třeba je restartovat, když je restartována závislá služba.
V souboru služeb jednotky jsou tři různé možnosti pro restartování služby s restartováním závislé služby.
- Část
- BindsTo
- Vyžaduje
Všechny tyto možnosti plní stejný úkol.
Vezměme si příklad ssh.service, který závisí na apparmor.service; Linux Security Module pro zajištění potřebného přístupu. Chcete-li zobrazit seznam závislostí služby v Linuxu systemctl s závislosti na seznamu název příkazu a služby.
systemctl list-dependencies ssh.service
Pokud tedy chcete restartovat službu ssh.service při restartování apparmor.service, musíte zahrnout volbu PartOf, BindsTo nebo Requires spolu s názvem služby v sekci [Unit] souboru apparmor.service.
Otevřete soubor apparmor.service.
sudo nano / lib / systemd / Systém / apparmor.servicePřidejte následující řádek do oddílu [Jednotka].
Část =ssh.service
Uložte soubor a spusťte příkaz daemon-reload.
sudo systemctl daemon-reloadNyní restartujte ssh.service a poté zkontrolujte apparmor.service log.
Všimnete si apparmor.service restartován ve stejnou dobu ssh.service restartován.
Závěr
Chcete-li restartovat službu nebo služby v systému Linux, systemctl příkaz se používá s restartovat volba. The systemctl je nástroj příkazového řádku používaný ke správě služeb systemd. The restartovat volba spustí službu a poté ji zastaví, čímž se aktivuje neaktivní služba. Službu však můžete restartovat bez její aktivace pomocí zkuste-restartovat volba.