Cron – cykliczne uruchamianie zadań

Praktycznie każdy automatyk, prędzej czy później, trafi na potrzebę cyklicznego uruchamiania zadań. Problem ten przybiera wiele form, więc rozwiązania są realizowane w różny sposób np. harmonogram zadań w Windowsie, tzw. joby w bazach danych lub cron (command run on) w Linuxie.

W trakcie realizacji mojego projektu monitorowania temperatury w chacie potrzebowałem mechanizmu uruchamiającego mój skrypt co kilka, kilkanaście lub kilkadziesiąt minut. Od razu przyszło mi do głowy rozwiązanie, które znałem z systemów Linux. Mój projekt oparty jest na Raspberry PI z zainstalowanym Raspbianem, więc pomyślałem, że nie powinno być z tym problemów.

Cron – proces i jego uruchomienie

Rozpocząłem od sprawdzenia statusu cron’a na moim systemie:

/etc/init.d/cron status
cron

Tak się złożyło, że cron jest i działa na moim systemie. Dorzucam od razu komendę jakby ktoś potrzebował doinstalować graficzny interfejs.

sudo apt install gnome-schedule

Ja wolę działać w konsoli, więc od razu podaję najbardziej przydatne polecenia.
Do rozpoczęcia modyfikacji tablicy z zadaniami cron’a:

sudo crontab -e

i do podglądu zadań:

sudo crontab -l

Nie będę rozpisywał się o formatowaniu wpisów w tablicy cron’a, bo opis można to znaleźć praktycznie wszędzie. Podam za to kilka przydatnych dla mnie przykładów, uruchamianie co:

  • 5 minut: */5 * * * * /home/pi/script.sh
  • godzinę o równej godzinie: 0 * * * * /home/pi/script.sh
  • dzień o północy: 0 0 * * * /home/pi/script.sh

Można samemu przygotować zestaw reguł w oparciu o stronę: https://crontab.guru/#*

Zakończenie

Na koniec jeszcze chciałbym dorzucić kilka przydatnych kawałków kodu:

  • Jak wykonać logi:
 * * * * /home/pi/script.py >> ~/cron.log 2>&1 
  • Uruchomienie skryptu podczas startu systemu:
 @reboot python /home/pi/script.py 
  • Jak uruchamiać skrypt podczas startu systemu i nie blokować procesu uruchamiania
 @reboot python /home/pi/script.py & 

Jeśli jesteś zainteresowany podobnymi tematami napisz o tym. Tymczasem, tym wpisem zbieram kilka istotnych informacji i zapraszam do innych artykułów na blogu i na facebooka.

Leave a Reply

Twój adres e-mail nie zostanie opublikowany.