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.
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
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
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
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.
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.
Apply the discount by inserting the promo code in the special field at checkout:
Apply the discount by inserting the promo code in the special field at checkout: