Cron ignoruje aktualizację crontab

5

Skomentowałem wiersz w crontabie na serwerze Debiana, który, jak sądzę, był tam domyślnie, ale co godzinę powodował, że co godzinę otrzymywałem wiadomości e-mail z błędami:

# m h dom mon dow user  command
17 *   * * *   root    cd / && run-parts --report /etc/cron.hourly

Jednak e-maile o błędach wciąż pojawiają się, jakby nie zostały skomentowane. E-maile o błędach:

Subject: Cron <root@(none)> root    cd / && run-parts --report /etc/cron.hourly (failed)
/bin/sh: root: not found

Jakieś pomysły?

GJ
źródło
nie byłoby łatwiej sudo vi crontab, w ten sposób modyfikujesz plik crontab roota?
Patrick
@patrick: Loguję się jako root, więc nie ma sudo ..
GJ.
Na wypadek, gdyby pomógł komukolwiek innemu, otrzymałem ten błąd, ponieważ uruchomiłem program crontab -e /etc/crontab, który NIE JEST bezpiecznie edytować / etc / crontab. Tworzy duplikat, który generuje ten błąd, i można go usunąć, uruchamiając crontab -r.
Jacob Hume

Odpowiedzi:

5

Kiedy mówisz „crontab”, nie jesteś konkretny. Powinieneś powiedzieć, który masz na myśli. Wygląda jednak na podstawie zawartości /etc/crontab. Ponieważ ten plik ma pole użytkownika, nie ma sensu, aby ten błąd był wyświetlany. Założę się, że istnieje crontab użytkownika, który ma tę linię. Crontabs użytkownika nie zawierają pól użytkownika.

Właściwe jest, aby nie zmieniać tej linii /etc/crontab. Mogą działać inne zadania.

Możesz edytować ten plik i pliki w /etc/cron.*podkatalogach za pomocą dowolnego edytora. Możesz określić edytor, którego chcesz używać podczas korzystania crontab -eprzez ustawienie EDITORzmiennej środowiskowej.

Powinieneś użyć crontab -edo edycji crontab użytkownika (w tym roota). Usuń pole użytkownika lub usuń ten wiersz w crontab użytkownika, w którym się pojawia (nie /etc/crontab). Crontabs użytkownika nie mają pola użytkownika, ale crontabs systemowe tak.

Crontabs użytkownika znajdują się w /var/spool/cron/crontabs. Możesz sudo grepdla linii dowiedzieć się, który plik ma linię zbłąkaną. Ponownie używaj tylko crontab -u username -edo edycji crontab użytkownika.

Dennis Williamson
źródło
2

Sprawdź stronę podręcznika systemowego pod kątem crontab (5) ( man 5 crontab), szczególnie w sekcji „PRZYKŁADOWY PLIK SYSTEMU CRON”. Tylko plik / etc / crontab zawiera pole nazwy użytkownika. Crontabs użytkowników niesystemowych nie zawierają tego pola. Jeśli chcesz edytować / etc / crontab, użyj edytora tekstu, a nie komendy crontab (1).

Arcege
źródło