Powrót do kategorii
Backend
tagi
bash, cron, serwer, ssh,

CRON – jak uruchamiać zadania co 1 sekundę?

Grzegorz
Grzegorz, 07/12/2014

29Jeż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ą:

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.

Podobne artykuły

Crawlery – wstęp do skanowania dużej liczby danych

Podstawy budowy środowiska skanującego dużą liczbę danych w Internecie.

Zarządzanie zdalnym zespołem programistów

Jak efektywnie współpracować i zarządzać zdalnymi pracownikami IT.

Poznajmy się
Poznajmy się
Chcesz porozmawiać o start-upach, projektach lub programowaniu?

Hello World! Sp. z o.o.
ul. Twarda 18
00 -105 Warszawa

+48 22 378 47 27
GOGOmedia
GOGOmedia
Internet Software House

Jesteśmy internetową firmą technologiczną, dostarczamy kompletne rozwiązania informatyczne z zakresu web aplikacji. Kompleksowo obsługujemy klientów z różnych sektorów biznesu w zakresie dedykowanego oprogramowania. Prowadzimy szkolenia, doradzamy, wykonujemy specjalistyczne audyty i dzielimy się zdobytą przez lata wiedzą. Dla wielu jesteśmy partnerem, który pomaga osiągać wyznaczone cele biznesowe w najbardziej optymalny sposób.

Polecamy
Polecamy
narzędzia wspierające naszą codzienną pracę
  • New Relic
  • CloudFlare
  • JIRA
  • Bamboo
  • Axure
  • Zendesk
  • Microsoft Project