Betalningsmetoder Abuse

Så här utför du en automatisk omstart av en Linux-tjänst

  • Hem
  • Kunskapsbas
  • Så här utför du en automatisk omstart av en Linux-tjänst
26.02.2021, 20:42

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.

Automatisk omstart 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

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

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

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

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

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

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.

Automatisk omstart via skript

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.