Betalingsmetoder Abuse

Sådan udfører du en automatisk genstart af en Linux-tjeneste

  • Hjem
  • Videnbase
  • Sådan udfører du en automatisk genstart af en Linux-tjeneste
26.02.2021, 20:42

Der sker ofte spontane nedbrud af tjenester. Brugeren er nødt til at håndtere deres manuelle gendannelse. Det er ikke noget problem som sådan, hvis det sker på en hjemmecomputer. Endnu mere - det er godt, fordi der er en reel mulighed for at bestemme tjenestens tilstand, identificere fejl og eliminere dem. Men situationen er helt anderledes, når det drejer sig om servere og VPS-tjenester, som skal arbejde konstant for at give adgang til et websted eller en applikation. I denne artikel vil vi se på, hvordan man konfigurerer automatisk genstart af Linux-tjenester på flere måder: med et overvågningsscript, der køres regelmæssigt via cron, og i systemd.

Automatisk genstart i systemd

Standardindstillingen er, at systemd ikke gør noget ved tjenesten, hvis den går ned. Men brugeren kan altid konfigurere indstillingerne på en sådan måde, at tjenesten automatisk genstartes i tilfælde af, at den går ned eller stopper. Til dette formål bruges Restart-direktivet, som skal tilføjes til Service-sektionen. Lad os nu se på et eksempel på konfiguration af den automatiske genstart af Apache-tjenesten:

$ sudo systemctl edit apache2

[Service]

Restart=on-failure

RestartSec=5s

настройка автоматического перезапуска сервиса Apache:

Her angiver RestartSec, hvor lang tid der skal gå, før tjenesten genstartes. Når du er færdig, skal du gemme ændringerne og køre kommandoen daemon-reload for at genlæse konfigurationen:

$ sudo systemctl daemon-reload

For at tjekke, om alt fungerer korrekt, skal du se på processens status og afslutte processen med et kill-signal:

 $ sudo systemctl status apache2

$ kill -KILL 32091

Процесс сигналом kill

Tjek status igen, processen burde køre. Hvis du vil indstille initialiseringen til at køre hver gang, skal du bruge et særligt direktiv Restart: always. Men du skal være meget forsigtig, når du bruger det, for det giver dig ikke mulighed for at afslutte processen, selv om det er nødvendigt. Hvis processen hele tiden går ned, så den genstartes, kan du tilføje en grænse for antallet af genstarter i Service-sektionen:

$ sudo systemctl edit apache2

[Service]

StartLimitIntervalSec=500

StartLimitBurst=5

Restart=on-failure

RestartSec=5s

Лимит на количество перезапусков в секцию Service

Her angiver StartLimitBurst og StartLimitIntervalSec, hvor vigtigt det er at genstarte tjenesten fem gange, og hvis den går ned alle fem gange, skal man lade den være i fred og ikke røre ved den. Det andet direktiv begrænser genstart af tjenesten til 500 sekunder.

Automatisk genstart via script

Dette er nok den mest pålidelige og fejlsikre metode, som fungerer i alle Linux-versioner. I Apache er det nemt at lave en automatisk genstart ved hjælp af et script. For at gøre dette skal du indtaste kommandoen:

$  sudo vi /usr/local/bin/apache-monitor.sh

#!/bin/bash

ps -A | grep apache2 || systemctl start apache2

Gem filen, og sørg for at gøre den eksekverbar:

chmod ugo+x /usr/local/bin/apache-monitor.sh

Glem ikke at tilføje en cron-post til at køre scriptet med jævne mellemrum:

$ sudo crontab -e

*/5 * * * * /usr/local/bin/apache-monitor.sh

Det er det hele. Ja, det er ikke så let at opsætte en automatisk genstart af tjenesten, som det kan se ud ved første øjekast. Men det er en vigtig evne, så du bør være opmærksom på det - det er helt sikkert det værd.