Jeśli chcesz uruchamiać z konta roota, po wydaniu jako root polecenia
crontab -e, w edytorze będziesz mógł edytować tablicę Crona. Jeśli chciałbyś uruchamiać skrypt z "tablicy systemowej", to masz takie katalogi, jak
/etc/cron.*. W nich znajdują się skrypty, które są uruchamiane co godzinę, codziennie, co tydzień i raz w miesiącu. Wyjątkiem jest katalog
/etc/crontab.d, który zawiera pliki z tablicami Crona. W formacie
prawie takim samym, jak format tablicy użytkownika. Różnica polega na tym, że pojawia się dodatkowe pole pomiędzy "kiedy" a "co" uruchomić, które jest loginem użytkownika, z jakiego prawami ma zostać uruchomione polecenie.
Przyjrzyjmy się przykładowi. Użytkownik "rav" chciałby od poniedziałku do piątku, ale tylko w pierwszej połowie miesiąca, o 19:38 wykonać skrypt
/usr/bin/somescript.sh. Może na swoim koncie wydać polecenie
crontab -e, a następnie w swoim ulubionym edytorze (którym jest vim, bo taką sobie ustalił zmienną EDITOR), zapisze następującą linijkę:
Jeśli ma zaprzyjaźnionego admina, na przykład siebie, to może wyedytować plik
/etc/cron.d/somescript i tam dopisać:
Kod: Zaznacz cały
38 19 1-15 * 1-5 rav /usr/bin/somescript.sh
Efekt będzie ten sam. Różnica polega na tym, że normalnie nie będzie mógł edytować pliku
/etc/cron.d/somescript i w pierwszym przypadku crontab sprawdzi składnię pliku. Jeśli by się pomylił i wpisał:
crontab nakrzyczy na niego, że nie może wystąpić godzina 38:19! W przypadku tablicy systemowej, nie wiem, czy jest możliwość sprawdzenia składni.
Co do Twojego problemu, to proponowałbym dla testów usunąć ">/dev/null 2>&1" i zobaczyć, co pojawia się na wyjściu. Lub też zamieniłbym
/dev/null na jakiś plik, jak padła już sugestia. Bez przekierowania potoków, wszystko co trafiłoby na STDOUT i STDERR zostanie skierowane na maila użytkownika, który uruchamia wpis Crona. Dodatkowo, zajrzałbym do
/var/log/syslog (lub też do pliku, gdzie Cron wyrzuca logi) i zobaczył, co Cron wypisuje.