Betalingsmåter Abuse

Slik utfører du en automatisk omstart av en Linux-tjeneste

26.02.2021, 20:42

Ofte skjer det et spontant fall i tjenesten. Brukeren må håndtere manuell gjenoppretting. Det er ikke noe problem som sådan, hvis det skjer på en hjemmedatamaskin. Enda mer - det er bra, fordi det er en reell mulighet til å bestemme tilstanden til tjenesten, identifisere feil og eliminere dem. Men situasjonen er ganske annerledes når det gjelder servere og VPS-tjenester, som må jobbe kontinuerlig for å gi tilgang til et nettsted eller en applikasjon. I denne artikkelen skal vi se på hvordan du konfigurerer automatisk omstart av Linux-tjenester på flere måter: med et overvåkingsskript som kjøres med jevne mellomrom via cron og i systemd.

Automatisk omstart i systemd

Standardinnstillingen er at systemd ikke gjør noe med tjenesten hvis den krasjer. Men brukeren kan alltid konfigurere innstillingene slik at tjenesten automatisk startes på nytt hvis den krasjer eller stopper. Til dette formålet brukes Restart-direktivet, som bør legges til i Service-delen. La oss nå se på et eksempel på konfigurering av automatisk omstart av Apache-tjenesten:

$ sudo systemctl edit apache2

[Service]

Restart=on-failure

RestartSec=5s

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

Her angir RestartSec hvor lenge man skal vente før tjenesten startes på nytt. Når du er ferdig, lagrer du endringene og kjører kommandoen daemon-reload for å lese konfigurasjonen på nytt:

$ sudo systemctl daemon-reload

For å sjekke om alt fungerer som det skal, kan du se på prosessens status og avslutte prosessen med et kill-signal:

 $ sudo systemctl status apache2

$ kill -KILL 32091

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

Sjekk statusen igjen, prosessen skal kjøre. Hvis du vil angi at initialiseringen skal kjøres hver gang, bruker du et spesielt direktiv Restart: always. Men du bør være veldig forsiktig når du bruker det, for det vil ikke tillate deg å avslutte prosessen selv om det er nødvendig. Hvis prosessen stadig krasjer, slik at den må startes på nytt, kan du legge til en grense for antall omstarter i Service-delen:

$ sudo systemctl edit apache2

[Service]

StartLimitIntervalSec=500

StartLimitBurst=5

Restart=on-failure

RestartSec=5s

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

Her angir StartLimitBurst og StartLimitIntervalSec hvor viktig det er å starte tjenesten på nytt fem ganger, og hvis den krasjer alle disse fem gangene, skal du la den være i fred og ikke røre den. Det andre direktivet begrenser omstart av tjenesten til 500 sekunder.

Automatisk omstart via skript

Dette er sannsynligvis den mest pålitelige og feilsikre metoden som fungerer i alle versjoner av Linux. I Apache er det enkelt å lage en automatisk omstart ved hjelp av et skript. For å gjøre dette må du skrive inn kommandoen:

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

#!/bin/bash

ps -A | grep apache2 || systemctl start apache2

Lagre filen og sørg for å gjøre den kjørbar:

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

Ikke glem å legge til en cron-oppføring for å kjøre skriptet med jevne mellomrom:

$ sudo crontab -e

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

Det er alt. Ja, det er ikke så enkelt å sette opp en automatisk omstart av tjenesten som det kan virke ved første øyekast. Men det er en viktig evne, så du bør være oppmerksom på det - det er definitivt verdt det.