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). 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:

  • 30 – minutę
  • 4 – godzinę
  • 1,15 – dzień miesiąca (1 lub 15)
  • * – miesiąc (gwiazdka oznacza każdego miesiąca)
  • 5 – dzień tygodnia (piątek)
  • root – użytkownik, który ma wykonać akcję
  • /bin/backup – co ma zostać wykonane

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