Mokėjimo būdai Abuse

Kaip atlikti automatinį "Linux" paslaugos paleidimą iš naujo

26.02.2021, 20:42

Dažnai paslaugos sumažėja savaime. Naudotojas turi pasirūpinti jų atkūrimu rankiniu būdu. Jei tai atsitinka namų kompiuteryje, problemos kaip tokios nėra. Dar daugiau - tai gerai, nes atsiranda reali galimybė nustatyti paslaugos būklę, nustatyti gedimus ir juos pašalinti. Tačiau situacija visiškai kitokia, kai kalbama apie serverius ir VPS paslaugas, kurie turi nuolat veikti, kad būtų galima naudotis svetaine ar taikomąja programa. Šiame straipsnyje apžvelgsime, kaip konfigūruoti automatinį "Linux" paslaugų paleidimą iš naujo keliais būdais: naudojant stebėjimo scenarijų, periodiškai paleidžiamą per "cron", ir "systemd".

Automatinis paleidimas iš naujo per systemd

Pagal numatytuosius nustatymus systemd nieko nedarys su paslauga, jei ji sugenda. Tačiau naudotojas visada gali sukonfigūruoti nustatymus taip, kad sugedus ar sustojus tarnybai ji būtų automatiškai paleista iš naujo. Šiam tikslui naudojama direktyva Restart (paleisti iš naujo), kurią reikia įtraukti į skyrių Service (Paslauga). Toliau panagrinėkime automatinio "Apache" paslaugos paleidimo iš naujo konfigūravimo pavyzdį:

$ sudo systemctl edit apache2

[Service]

Restart=on-failure

RestartSec=5s

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

Čia RestartSec nurodoma, kiek laiko laukti prieš paleidžiant paslaugą iš naujo. Baigę išsaugokite pakeitimus ir paleiskite komandą daemon-reload, kad vėl perskaitytumėte konfigūraciją:

$ sudo systemctl daemon-reload

Toliau, norėdami patikrinti, ar viskas veikia tinkamai, pažvelkite į proceso būseną, nutraukite procesą signalu kill:

 $ sudo systemctl status apache2

$ kill -KILL 32091

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

Dar kartą patikrinkite būseną, procesas turėtų būti vykdomas. Norėdami nustatyti, kad iniciacija būtų paleidžiama kiekvieną kartą, naudokite specialią direktyvą Restart: always. Tačiau naudodami ją turėtumėte būti labai atsargūs, nes ji neleis nutraukti proceso, net jei tai būtina. Jei procesas nuolat sutrinka, todėl jį reikia paleisti iš naujo, į skyrių Service (Paslauga) galite įtraukti paleidimų skaičiaus apribojimą:

$ sudo systemctl edit apache2

[Service]

StartLimitIntervalSec=500

StartLimitBurst=5

Restart=on-failure

RestartSec=5s

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

Čia StartLimitBurst ir StartLimitIntervalSec nurodo, kad svarbu paslaugą paleisti iš naujo penkis kartus, o jei ji sugenda visus tuos penkis kartus, palikti ją ramybėje ir neliesti. Antroji direktyva apriboja paslaugos pakartotinį paleidimą iki 500 sekundžių.

Automatinis paleidimas iš naujo scenarijumi

Tai bene patikimiausias ir saugiausias būdas, veikiantis visose "Linux" versijose. Programoje "Apache" lengva sukurti automatinį paleidimą iš naujo naudojant skriptą. Norėdami tai padaryti, turite įvesti komandą:

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

#!/bin/bash

ps -A | grep apache2 || systemctl start apache2

Įrašykite failą ir būtinai padarykite jį vykdytinu:

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

Nepamirškite pridėti "cron" įrašo, kad scenarijus būtų periodiškai paleidžiamas:

$ sudo crontab -e

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

Tai viskas. Taip, nustatyti automatinį paslaugos paleidimą iš naujo nėra taip paprasta, kaip gali pasirodyti iš pirmo žvilgsnio. Tačiau tai svarbi galimybė, todėl turėtumėte į ją atkreipti dėmesį - tikrai verta.