Większość wie jak działa crontab, podajemy kiedy ma się coś uruchomić i to wtedy się uruchamia. Są dwie metody wpisu:
- Poprzez wpisanie do pliku;
- 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.