Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Cześć,
Proszę o sprawdzenie, czy poniższy skrypt jest poprawny. Skrypt uruchamiany jest cyklicznie przez cron i ma zadanie sprawdzać, czy dana usługa działa.
Zaadoptowałem go i zmieniłem dla usługi, która uruchamiana jest przez systemd.
#!/bin/bash
PIDFILE=/var/run/usluga.pid
if (kill -0 `cat $PIDFILE`)
then
echo "it's alive!" > /dev/null 2>&1
else
rm $PIDFILE
sudo systemctl start usluga
echo "Usluga restarted at `date`" >> /var/log/usluga-crash.log
fiCzy macie może inne wypróbowane sposoby na automatyczne sprawdzanie, czy dana usługa działa i ewentualne jej ponowne uruchomienie?
Dziękuję z góry za pomoc.
Offline



Dzban Naczelny

Offline



Dzban Naczelny
I oczywiście nie musisz pisać nowej usługi tylko użyj systemctl edit
https://www.linode.com/docs/quick-answers/linux-ess … to-systemctl/

Offline







Podobno człowiek...;)








Proszę o sprawdzenie, czy poniższy skrypt jest poprawny. Skrypt uruchamiany jest cyklicznie przez cron i ma zadanie sprawdzać, czy dana usługa działa.
Pomijajac wbudowane możliwości SystemD, w repo masz jeszcze programik Monit, który robi dokładnie to samo, i powiadamia mailem, kiedy kilka kolejnych restartów nie podnosi usługi.
https://www.cyberciti.biz/faq/how-to-install-and-us … linux-server/
Jak lubisz własną artystyczną rzeźbę w kodzie to polecam daemontools, w Debianie chodzi grzecznie i daje niemal kosmiczne możliwości.
NP mój skrypt do php-fpm w Debianie:
### cat /etc/service/phpfpm/run
#!/bin/bash
exec 2>&1
export TZ='Europe/Warsaw'
test -d /run/php || mkdir -p /run/php;
chown -R php:php /run/php;
chown -R php:php /var/log/php
chmod 1777 /run/php;
mkdir -p /tmp/php/{roudcube,presta,wordpress,phpmyadmin}/
chown php:php /tmp/php/{roudcube,presta,wordpress,phpmyadmin}/
chmod 1770 /tmp/php/{roudcube,presta,wordpress,phpmyadmin}/
mkdir -p /tmp/php/{sessions,upload,soap,opcache}/
chown php:php /tmp/php/{sessions,upload,soap,opcache}/
chmod 1770 /tmp/php/{sessions,upload,soap,opcache}/
### /usr/bin/cgclassify -g memory,cpu,net_cls,blkio,pids:serwer/phpfpm $$;
exec /usr/bin/setuidgid php /usr/sbin/php-fpm7.3 -F -y /etc/php/7.3/fpm/php-fpm.confPozdro
Ostatnio edytowany przez Jacekalex (2020-09-13 07:25:05)
Offline
urbinek napisał(-a):
Ale po co?
https://singlebrook.com/2017/10/23/auto-restart-cra … vice-systemd/
urbinek napisał(-a):
I oczywiście nie musisz pisać nowej usługi tylko użyj systemctl edit
https://www.linode.com/docs/quick-answers/linux-ess … to-systemctl/
Dzięki za wskazówki.
Poniżej moja usługa:
[Unit] Description=usluga After=network.target Requires=network.target [Service] Type=forking PIDFile=/var/run/usluga.pid ExecStart=/usr/local/bin/usluga -b -B /var/run/usluga.pid ExecStop=/usr/bin/rm /var/run/usluga.pid TimeoutStopSec=1 Restart=always RestartSec=5 StartLimitInterval=0 [Install] WantedBy=multi-user.target
Następnie utworzyłem nową usługę w /etc/systemd/system/usługa.service.d/override.conf:
sudo systemctl edit usluga
[Service] Type=forking PIDFile=/var/run/usluga.pid RemainAfterExit=no Restart=on-failure RestartSec=5s
Dalej:
sudo systemctl daemon-reload
[root@box ~]# sudo systemctl status usluga
● usluga.service - usluga
Loaded: loaded (/etc/systemd/system/usluga.service; enabled; vendor preset: disabled)
Drop-In: /etc/systemd/system/usluga.service.d
└─override.conf
Active: active (running) since Sun 2020-09-13 14:31:51 CEST; 5h 24min ago
Process: 282807 ExecStop=/usr/bin/rm /var/run/usluga.pid (code=exited, status=0/SUCCESS)
Process: 282924 ExecStart=/usr/local/bin/usluga -b -B /var/run/usluga.pid (code=exited, status=0/SUCCESS)
Main PID: 282926 (usluga)
Tasks: 16 (limit: 18976)
Memory: 8.7M
CGroup: /system.slice/usluga.service
├─282925 /usr/local/bin/usluga -b -B /var/run/usluga.pid
└─282926 /usr/local/bin/usluga -b -B /var/run/usluga.pid
Sep 13 14:31:50 box systemd[1]: Starting usluga...
Sep 13 14:31:51 box systemd[1]: usluga.service: Can't open PID file /var/run/usluga.pid (yet?) after start: No such file or directory
Sep 13 14:31:51 box systemd[1]: usluga.service: Supervising process 282926 which is not our child. We'll most likely not notice when it exits.
Sep 13 14:31:51 box systemd[1]: Started usluga.Zabijam proces:
sudo kill -9 282926
Sprawdzam, czy usługa jest restartowana:
[root@box ~]# sudo systemctl status usluga
● usluga.service - usluga
Loaded: loaded (/etc/systemd/system/usluga.service; enabled; vendor preset: disabled)
Drop-In: /etc/systemd/system/usluga.service.d
└─override.conf
Active: inactive (dead) since Sun 2020-09-13 20:00:48 CEST; 1min 33s ago
Process: 303253 ExecStop=/usr/bin/rm /var/run/usluga.pid (code=exited, status=0/SUCCESS)
Process: 282924 ExecStart=/usr/local/bin/usluga -b -B /var/run/usluga.pid (code=exited, status=0/SUCCESS)
Main PID: 282926
Sep 13 14:31:50 box systemd[1]: Starting usluga...
Sep 13 14:31:51 box systemd[1]: usluga.service: Can't open PID file /var/run/usluga.pid (yet?) after start: No such file or directory
Sep 13 14:31:51 box systemd[1]: usluga.service: Supervising process 282926 which is not our child. We'll most likely not notice when it exits.
Sep 13 14:31:51 box systemd[1]: Started usluga.
Sep 13 20:00:48 box systemd[1]: usluga.service: Killing process 282926 (n/a) with signal SIGKILL.
Sep 13 20:00:48 box systemd[1]: usluga.service: Killing process 282926 (n/a) with signal SIGKILL.Niestety usługa nie jest restartowana. W czym może być problem?
Ostatnio edytowany przez chmuraz (2020-09-13 21:35:41)
Offline







Podobno człowiek...;)








Jak odpalisz skrypta z palca, to zrobi robotę i się zamyka czy wisi w powłoce?
Usługa superwizora nadaje się do procesu, który działa w trybie demona, jak np Nginx albo Sshd,
Skrypt, który zamyka się po wykonaniu zadania, nie nadaje się do takiej kombinacji.
Offline
Jacekalex napisał(-a):
Jak odpalisz skrypta z palca, to zrobi robotę i się zamyka czy wisi w powłoce?
Usługa superwizora nadaje się do procesu, który działa w trybie demona, jak np Nginx albo Sshd,
Skrypt, który zamyka się po wykonaniu zadania, nie nadaje się do takiej kombinacji.
Sądzę, że moja usługa działa w trybie demona - po podpaleniu działa "nonstop" i ma interfejs www, który pozwala na konfigurację i podgląd działania usługi.
Jak poprawić konfigurację systemd, aby moja usługa była monitorowana i ewentualnie restartowana?
Chyba, że można monitorować działanie interfejsu www - znalazlem poniższy skrypt, ale nie wiem jak go poprawić, aby działał - oraz pod systemd.
! curl -s -digest -o -u <user>:<password> "http://192.168.1.2:12500" |grep -c "Access denied." >/dev/null then /usr/bin/killall -9 usluga /var/local/usluga -b & echo `date "+%d/%m/%y %R Web Interface NOT working, restarting...."` >> /var/log/usluga_check.log
Macie jakieś inne pomysły (w miarę proste w realizacji)?
Offline