Czasami niektóre programy lub skrypty niespodziewanie kończą swoją pracę z powodu błędu. Jeśli jednak pracujemy pod kontrolą systemu linux łatwo temu zaradzić.
W systemie linux istnieje program cron dzięki któremu możemy łatwo sprawić by nasz program lub skrypt działał zawsze. Cron to nic innego jak harmonogram zadań, oparty na czasie. Dzięki niemu mogę w prosty sposób zlecić uruchamianie określonego skryptu lub programu co zadany interwał czasu, lub o konkretnej godzinie, dniu itd.
Na potrzeby tego wpisu przygotowałem skrypt do nadzoru pracy domoticza, przykład został wykonany na raspberry pi. Pierwsza rzecz to przygotowanie skryptu shellowego który będzie uruchamiał domoticza jeśli jego proces w systemie nie istnieje. Zaczynamy w katalogu domowym i kolejno wykonujemy komendy by utworzyć i edytować plik:
cd pico run.sh
W edytorze pico wpisujemy zawartość skryptu:
#!/bin/bash if [[ ! $(/usr/bin/pgrep -f domoticz) ]]; then /home/pi/domoticz/domoticz -daemon -www 80 -sslwww 0 fi
Skrypt działa w ten sposób że za pomocą programu pgrep sprawdza jaki jest numer procesu domoticza, i jeśli proces istnieje to zwraca jego numer a jeśli nie to zwraca pustą wartość co z kolei wyzwala uruchomienie domoticza. Po zapisaniu skryptu musimy nadać u atrybut wykonywalności za pomocą komendy:
sudo chmod +x run.sh
Tak przygotowany skrypt należy teraz dodać do cron-a by ten uruchamiał go co minutę. Otwieramy więc plik /etc/crontab do edycji:
sudo pico /etc/crontab
I na jego końcu dopisujemy:
* * * * * root /home/pi/run.sh
Po zapisaniu pliku, restartujemy usługę cron-a za pomocą komendy:
sudo /etc/init.d/cron restart
Gotowe teraz gdy domoticz się wysypie i przestanie działać maksymalnie po minucie zostanie ponownie uruchomiony.
Sposób ten zasadniczo można zastosować do nadzoru każdego procesu.