Adesea, există o întrerupere spontană a serviciului. Utilizatorul trebuie să se ocupe de recuperarea lor manuală. Nu există nici o problemă ca atare, dacă se întâmplă pe un computer de acasă. Chiar mai mult - este bine, deoarece există o oportunitate reală de a determina starea serviciului, de a identifica defecțiunile și de a le elimina. Dar situația este destul de diferită atunci când vine vorba de servere și servicii VPS, care trebuie să funcționeze constant pentru a oferi acces la un site web sau la o aplicație. În acest articol vom analiza modul de configurare a repornirii automate a serviciilor Linux în mai multe moduri: cu un script de monitorizare rulat periodic prin cron și în systemd.
Setarea implicită este că Systemd nu va face nimic cu serviciul dacă acesta se blochează. Dar utilizatorul poate oricând configura setările astfel încât, în cazul unei prăbușiri sau opriri a serviciului, acesta să fie repornit automat. În acest scop, se utilizează directiva Restart, care trebuie adăugată la secțiunea Service. În continuare, să ne uităm la un exemplu de configurare a repornirii automate a serviciului Apache:
$ sudo systemctl edit apache2
[Service]
Restart=on-failure
RestartSec=5s
Aici RestartSec specifică cât timp să așteptați înainte de a reporni serviciul. Când ați terminat, salvați modificările și executați comanda daemon-reload pentru a relua configurația:
$ sudo systemctl daemon-reload
În continuare, pentru a verifica dacă totul funcționează corect, uitați-vă la starea procesului, terminați procesul cu un semnal kill:
$ sudo systemctl status apache2
$ kill -KILL 32091
Verificați din nou starea, procesul ar trebui să ruleze. Pentru a seta ca inițializarea să ruleze de fiecare dată, utilizați o directivă specială Restart: always. Dar trebuie să fiți foarte atenți atunci când o utilizați, deoarece nu vă va permite să terminați procesul chiar dacă este necesar. Dacă procesul se blochează constant, astfel încât să fie repornit, puteți adăuga o limită a numărului de reporniri la secțiunea Service:
$ sudo systemctl edit apache2
[Service]
StartLimitIntervalSec=500
StartLimitBurst=5
Restart=on-failure
RestartSec=5s
Aici StartLimitBurst
și StartLimitIntervalSec
indică importanța de a reporni serviciul de cinci ori, iar dacă se blochează de toate aceste cinci ori, de a-l lăsa în pace și de a nu-l atinge. A doua directivă limitează repornirile serviciului la 500 de secunde.
Aceasta este probabil cea mai fiabilă și sigură metodă care funcționează în toate versiunile de Linux. În Apache este ușor să construiți o repornire automată folosind un script. Pentru a face acest lucru, trebuie să introduceți comanda:
$ sudo vi /usr/local/bin/apache-monitor.sh
#!/bin/bash
ps -A | grep apache2 || systemctl start apache2
Salvați fișierul și asigurați-vă că îl faceți executabil:
chmod ugo+x /usr/local/bin/apache-monitor.sh
Nu uitați să adăugați o intrare cron pentru a rula scriptul periodic:
$ sudo crontab -e
*/5 * * * * /usr/local/bin/apache-monitor.sh
Asta este tot. Da, configurarea unei reporniri automate a serviciului nu este la fel de ușoară precum pare la prima vedere. Dar este o abilitate importantă, așa că ar trebui să îi acordați atenție - merită cu siguranță.
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: