- Łukasz Stelmach – Java JBoss Linux - http://blog.stelmisoft.pl -

Cron a dzień miesiąca i dzień tygodnia

Za uruchamianie cykliczne zadań w systemach Linuksowych odpowiada demon cron. Jego konfiguracja odbywa się poprzez plik crontab, w którym są zdefiniowane jakie zdarzenie i kiedy mają wystąpić. Dokładna dokumentacja znajduje się w pliku MAN crontab(5) [1]. Przykładowy wpis może wyglądać następująco:

30 4 1,15 * 5 root /bin/backup

Poszczególne pola definiują, kiedy dana akcja ma zostać wykonana:

Pomiędzy poszczególnymi zapisami jest stosowany spójnik „i”, czyli zapis powyżej oznacza: wykonania skryptu /bin/backup przez użytkownika root każdego miesiąca, w piątek oraz kiedy dzień miesiąca jest równy 1 lub 15 o godzinie 4:30.

I tutaj pojawia się mała niespodzianka, ponieważ ta definicja nie jest prawdziwa.

W dokumentacji można przeczytać coś takiego:

Note: The day of a command’s execution can be specified by two fields — day of month, and day of week. If both fields are restricted (ie, aren’t *), the command will be run when either field matches the current time.

Co oznacza (w wolnym tłumaczeniu):

Dzień wykonania danej komendy może zostać podany w dwóch polach: dzień miesiąca oraz dzień tygodnia. Jeżeli oba pola są zdefiniowane (czyli są tam wartości inne wartości niż „*”) dana komenda zostanie wykonana jeżeli do aktualnego będzie pasowało jedno z tych pól.

Czy definicja powyżej oznacza: wykonania skryptu /bin/backup przez użytkownika root każdego miesiąca, w piątek lub kiedy dzień miesiąca jest równy 1 lub 15 o godzinie 4:30.

Należy zapamiętać, że jeżeli podamy oba pola, to między nimi występuje spójnik „lub”.

Źródła