CRON – jak uruchamiać zadania co 1 sekundę?
Czas czytania:
Jeżeli chcemy uruchamiać skrypty na serwerze o określonych porach dnia, tygodnia czy miesiąca to najlepszym i prostym rozwiązaniem jest Cron. Przydaje się on zarówno do działań administracyjnych (backupy, czyszczenie danych, analiza) jak również może być wykorzystywany do dowolnej aplikacji w celu asynchronicznego uruchamiania dowolnych części/modułów systemu. Utworzenie zadania jest bardzo proste. Wpisując polecenie „crontab -e” dostajemy możliwość dopisania nowego zadania do harmonogramu. Każda linia zawiera osobne zadanie. Poniższy schemat przedstawia skrypt o nazwie „sample” który jest uruchamiany codziennie o godzinie 15:12
12 15 * * * /path/to/smple
Poszczególne kolumny oznaczają:
- minuta od 0 do 59
- godzina od 0 do 23
- dzień od 1 do 31
- miesiąc od 1 do 12
- dzień tygodnia (0-niedziela, 1-poniedziałek,….)
- polecenie
Jak więc ustawić polecenie które będzie się wykonywało co 5 minut?
0,5,10,15,20,25,30,35,40,45,50,55 * * * * /path/to/script
Można jednak ułatwić sobie zadanie i skorzystać ze skróconej notacji
*/5 * * * * /path/to/script
Problem zaczyna się w momencie gdy chcemy uruchamiać skrypt w odstępie mniejszym niż minuta. Cron nie nadaje się za bardzo do tego. Jak więc to zrobić? Sposobów jest kilka, najprostszy i najbanalniejszy to przygotowanie skryptu który będzie chodził w tle cały czas. Należy jednak przy tym pamiętać o zabezpieczeniu aby po awarii (restart serwera, zabicie skryptu) uruchomił się od nowa. Na początek należy utworzyć skrypt który będzie nam monitorował procesy np. agent.sh o poniższej zawartości:
#!/bin/bash if [ $(/bin/pidof -x agent.sh| /usr/bin/wc -w) -gt 2 ] ; then exit 0 else while true; do /paht/to/scirpt sleep 1 done fi
A następnie dokładamy do crona uruchamianie go co 1 minutę:
*/1 * * * * /path/to/agent.sh
Dzięki takiemu rozwiązaniu jesteśmy pewni że skrypt będzie się wykonywał co sekundę oraz że w przypadku gdy nastąpi jego zatrzymanie to po minucie znowu zostanie praca wznowiona. Mamy też zabezpieczenie przed uruchomieniem wielu instancji skryptu w tym samym czasie. Nie jest to idealne rozwiązanie ale jeśli szukasz najprostszego – to ten podany wyżej na pewno w wielu przypadkach okaże się pomocny.
Zainteresował Cię ten artykuł?
Może Cię również zainteresować:
5 rzeczy, na które warto zwrócić uwagę, wybierając dedykowany system klasy ERP, WMS lub LMS
Tworzenie dedykowanych aplikacji web’owych (dostępnych przez przeglądarkę WWW z poziomu komputera, tabletu czy telefonu) jest… Read More
Warsztaty Discovery – 5 powodów dla których warto je przeprowadzić
Post pochodzi bezpośrednio z naszych oficjalnych kanałów na Social Media. W dynamicznym… Read More
Optymalizacja eCommerce vs. Zewnętrzny Dyrektor Technologiczny
🛠️ Studium przypadku 🛠️Post pochodzi bezpośrednio z naszych oficjalnych kanałów na Social… Read More