Ofta sker en spontan nedgång i servicen. Användaren måste hantera sin manuella återställning. Det finns inget problem som sådant, om det händer på en hemdator. Ännu mer - det är bra, för det finns en verklig möjlighet att bestämma tjänstens tillstånd, identifiera fel och eliminera dem. Men situationen är helt annorlunda när det gäller servrar och VPS-tjänster, som måste fungera ständigt för att ge tillgång till en webbplats eller applikation. I den här artikeln kommer vi att titta på hur man konfigurerar automatisk omstart av Linux-tjänster på flera sätt: med ett övervakningsskript som körs regelbundet via cron och i systemd.
Standardinställningen är att Systemd inte gör något med tjänsten om den kraschar. Men användaren kan alltid konfigurera inställningarna på ett sådant sätt att tjänsten automatiskt startas om vid en krasch eller ett stopp. För detta ändamål används direktivet Restart, som bör läggas till i avsnittet Service. Låt oss nu titta på ett exempel på konfiguration av automatisk omstart av Apache-tjänsten:
$ sudo systemctl edit apache2
[Service]
Restart=on-failure
RestartSec=5s
Här anger RestartSec hur länge man ska vänta innan tjänsten startas om. När du är klar sparar du ändringarna och kör kommandot daemon-reload för att läsa om konfigurationen:
$ sudo systemctl daemon-reload
För att kontrollera att allt fungerar som det ska tittar du på processens status och avslutar processen med en kill-signal:
$ sudo systemctl status apache2
$ kill -KILL 32091
Kontrollera statusen igen, processen bör vara igång. För att ställa in initieringen så att den körs varje gång använder du ett särskilt direktiv Restart: always. Men du bör vara mycket försiktig när du använder det, eftersom det inte tillåter dig att avsluta processen även om det är nödvändigt. Om processen ständigt kraschar så att den måste startas om kan du lägga till en gräns för antalet omstarter i avsnittet Service:
$ sudo systemctl edit apache2
[Service]
StartLimitIntervalSec=500
StartLimitBurst=5
Restart=on-failure
RestartSec=5s
Här anger StartLimitBurst
och StartLimitIntervalSec
vikten av att starta om tjänsten fem gånger, och om den kraschar alla dessa fem gånger ska du lämna den i fred och inte röra den. Det andra direktivet begränsar omstarter av tjänsten till 500 sekunder.
Detta är förmodligen den mest tillförlitliga och säkra metoden som fungerar i alla versioner av Linux. I Apache är det enkelt att bygga en automatisk omstart med hjälp av ett skript. För att göra detta måste du ange kommandot:
$ sudo vi /usr/local/bin/apache-monitor.sh
#!/bin/bash
ps -A | grep apache2 || systemctl start apache2
Spara filen och se till att göra den körbar:
chmod ugo+x /usr/local/bin/apache-monitor.sh
Glöm inte att lägga till en cron-post för att köra skriptet med jämna mellanrum:
$ sudo crontab -e
*/5 * * * * /usr/local/bin/apache-monitor.sh
Det är allt. Ja, att ställa in en automatisk omstart av tjänsten är inte så lätt som det kan tyckas vid första anblicken. Men det är en viktig förmåga, så du bör vara uppmärksam på det - det är definitivt värt 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: