CRONTAB

Większość wie jak działa crontab, podajemy kiedy ma się coś uruchomić i to wtedy się uruchamia. Są dwie metody wpisu:

  1. Poprzez wpisanie do pliku;
  2. Poprzez wpisanie do crontaba użytkownika (oczywiście też w pliku :) );
*     *     *     *     *  komenda do wykonania
-     -     -     -     -
|     |     |     |     |
|     |     |     |     +----- dzień tygodnia (0 - 7) (niedziela=0, poniedziałek=1, wtorek=2, ..., niedziela=7) (niedziela może być przedstawiona jako 0 lub 7)
|     |     |     |     
|     |     |     +------- miesiąc (1 - 12)
|     |     |     
|     |     +--------- dzień miesiąca (1 - 31)
|     |     
|     +----------- godzina (0 - 23)
|     
+------------- minuta (0 - 59)

 

W metody te różnią się tym że pierwsza to ręcznie edytujemy plik, a w drugiej za pomocą programu crontab. Do pierwszego tez nie wszyscy mają dostęp jak i po podaniu czasu w jakim ma się uruchomić podajemy z konta jakiego użytkownika.

NP: uruchom skrypt w każdą niedziele o 5:30 rano jako użytkownik test11111

30 5 * * 0 test11111 /bin/echo „OK”

Drugi sposób nie potrzebuje podania użytkownika uruchomienia, gdyż skrypt zostanie uruchomiony jako użytkownik dla którego był wykonane crontab -e.

NP:

30 5 * * 0 /bin/echo „OK”

A co jesli byśmy chcieli uruchomić w pierwszy poniedziałek miesiąca jakiś skrypt, podanie 1 jako poniedziałku dużo nie da, gdyż wtedy uruchmi się w każdy poniedziałek miesiąca, o godzinie 6:00 . Jednak przed uruchomieniem skryptu można sprawdzić który dzień tygodnia jest i jeśli jest od 1 do 7 to wiadomo że to jest pierwszy poniedziałek tygodnia, zatem wpis wyglądał by tak:

0 6 * * 1 [ `/bin/date +\%d` -le 7 ] && /bin/echo „OK”

A co jesli chcieli byśmy w 2 poniedziałek miesiąca, tutaj musimy sprawdzić czy dzień miesiąca jest od 8 do 14 włącznie, zatem wpisy wyglądał by tak:

0 6 * * 1 [ `/bin/date +\%d` -ge 8 ] && [ `/bin/date +\%d` -le 14 ] && /bin/echo „OK”

UWAGA:

Jeśli skrypt działa poprawnie uruchamiany ręcznie, a za pomocą crona już nie to trzeba pamiętać iż cron nie ma wszystkich zmiennych środowiskowych jak użytkownik zalogowany do konsoli. Dlatego ja staram się używać pełnych ścieżek do uruchamianych aplikacji.