Makseviisid Abuse

Kuidas teostada Linuxi teenuse automaatset taaskäivitamist

26.02.2021, 20:42

Tihtipeale on teenuse spontaanne vähenemine. Kasutaja peab tegelema nende käsitsi taastamisega. Kui see juhtub koduarvutis, ei ole probleemi kui sellist. Veelgi enam - see on hea, sest on reaalne võimalus määrata kindlaks teenuse seisukord, tuvastada vead ja kõrvaldada need. Kuid olukord on hoopis teine, kui tegemist on serverite ja VPS-teenustega, mis peavad pidevalt töötama, et tagada juurdepääs veebisaidile või rakendusele. Selles artiklis vaatleme, kuidas konfigureerida Linuxi teenuste automaatset taaskäivitamist mitmel viisil: croni kaudu perioodiliselt käivitatava monitooringuskriptiga ja systemd-süsteemis.

Automaatne taaskäivitamine systemd-süsteemis

Vaikimisi on nii, et systemd ei tee teenusega midagi, kui see jookseb kokku. Kuid kasutaja saab alati seadistusi nii seadistada, et teenuse kokkuvarisemise või peatumise korral teenus automaatselt taaskäivitatakse. Selleks kasutatakse direktiivi Restart, mis tuleb lisada Service sektsiooni. Järgnevalt vaatame näite Apache'i teenuse automaatse taaskäivitamise seadistamisest:

$ sudo systemctl edit apache2

[Service]

Restart=on-failure

RestartSec=5s

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

Siin RestartSec määrab, kui kaua tuleb enne teenuse taaskäivitamist oodata. Kui olete lõpetanud, salvestage muudatused ja käivitage käsk daemon-reload, et konfiguratsiooni uuesti lugeda:

$ sudo systemctl daemon-reload

Järgnevalt, et kontrollida, kas kõik töötab korralikult, vaadake protsessi olekut, lõpetage protsess kill-signaaliga:

 $ sudo systemctl status apache2

$ kill -KILL 32091

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

Kontrollige uuesti staatust, protsess peaks olema käimas. Kui soovite määrata, et initsialiseerimine toimuks iga kord, kasutage spetsiaalset direktiivi Restart: always. Kuid selle kasutamisel tuleb olla väga ettevaatlik, sest see ei võimalda protsessi lõpetada isegi siis, kui see on vajalik. Kui protsess jookseb pidevalt kokku, nii et seda taaskäivitatakse, võite lisada Service sektsioonis piirangu taaskäivituste arvule:

$ sudo systemctl edit apache2

[Service]

StartLimitIntervalSec=500

StartLimitBurst=5

Restart=on-failure

RestartSec=5s

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

Siin StartLimitBurst ja StartLimitIntervalSec näitavad, kui oluline on teenuse taaskäivitamine viis korda, ja kui ta kukub kõik need viis korda kokku, siis jätta ta rahule ja mitte puudutada. Teine direktiiv piirab teenuse taaskäivitamist 500 sekundiga.

Automaatne taaskäivitamine skripti abil

See on ilmselt kõige usaldusväärsem ja töökindlam meetod, mis töötab kõigis Linuxi versioonides. Apache'is on lihtne luua automaatne taaskäivitamine skripti abil. Selleks tuleb sisestada käsk:

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

#!/bin/bash

ps -A | grep apache2 || systemctl start apache2

Salvesta fail ja tee see kindlasti käivitatavaks:

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

Ärge unustage lisada cron-kirje, et skripti perioodiliselt käivitada:

$ sudo crontab -e

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

See ongi kõik. Jah, teenuse automaatse taaskäivituse seadistamine ei ole nii lihtne, kui see esmapilgul võib tunduda. Kuid see on oluline võime, seega peaksite sellele tähelepanu pöörama - see on seda kindlasti väärt.