Dodanie pliku do /etc/cron.d nie powoduje jego uruchomienia (ubuntu 10.04)

20

Jeśli scpuję plik cron do /etc/cron.d, nie będzie on działał, dopóki nie edytuję pliku i nie zmienię polecenia. Wtedy wydaje się, że crond podnosi plik cron.

Jak sprawić, by cron przeładował swoje pliki cron w Ubuntu 10.04? „dotknięcie” pliku nie działa, ani „ponowne uruchomienie cron” lub „przeładowanie cron”.

Mój plik cron jest ustawiony na uruchamianie co minutę i loguje się do pliku. Nic nie kończy się w pliku dziennika, dopóki nie edytuję polecenia i nie ma dla niego żadnego wpisu w / var / log / syslog

Jestem zakłopotany.

Oto mój plik cron zapisany w /etc/cron.d/runscript (uwaga, że ​​kończy się na nowej linii)

# Runs the script every minute. This is safe because it will exit with success if it's already running
* * * * * www-data if [ -f /usr/local/bin/thing ]; then exec /usr/bin/php /usr/local/bin/thing mode:prod -a 14 -d >> /var/log/thing/mything.log 2>&1; else echo `date +'[\%D \%T]'` "Thing not deployed. Command not run" >> /var/log/thing/mything.log; fi &
Tomek
źródło
3
Dobrze, że dołączyłeś użytkownika do uruchomienia zadania jako. Pominąłem to, co było przyczyną moich problemów.
Edward Anderson
1
Lata później nie zaakceptowano odpowiedzi? Udało ci się to? Ja też utknąłem, a typowe pułapki nie wydają się stanowić problemu.
twigmac

Odpowiedzi:

27

Właśnie natknąłem się na ten problem i chociaż nie odpowie on na konkretny przypadek, może on pomóc innym osobom googlować ten sam problem, ponieważ wyniki tego pytania są bardzo wysokie.

Zapisałem plik w /etc/cron.d i był on ignorowany. W moim przypadku było tak dlatego, że nadałem plikom rozszerzenie.

mytask.cronnie działał, ale zmieniłem jego nazwę na mytaski działało dobrze.

Wszelkie pliki z rozszerzeniami są ignorowane, więc upewnij się, że zapisany plik nie ma żadnego rozszerzenia.

Anigel
źródło
13
Strona podręcznika cron (8) na Debian / Ubuntu dokumentuje to dość wyraźnie w dzisiejszych czasach: „Wsparcie dla /etc/cron.d jest zawarte w samym demonie cron [...] Pliki w tym katalogu [...] muszą być zgodne zgodnie z tą samą konwencją nazewnictwa, jaką stosują części robocze (8): muszą składać się wyłącznie z wielkich i małych liter, cyfr, znaków podkreślenia i łączników. Oznacza to, że nie mogą zawierać żadnych kropek. ”
Josip Rodin
15

Sprawdź, czy kopiowany plik kończy się na \n. Wpisy w plikach crontab, które nie mają \nna końcu, generalnie mają problemy. Najłatwiejszym sposobem na to jest umieszczenie pustej linii po ostatnim wpisie.

user9517 obsługuje GoFundMonica
źródło
1
Właśnie miałem edytować moje pytanie, aby powiedzieć, że kończy się ono \ n
tom
1
Debian / Ubuntu cron ostrzega o tym w syslog, od wersji 3.0pl1-110 wydanej w 2010 roku, por. wpis w dzienniku zmian: „Rejestruj crontabom brak nowej linii przed EOF-em w syslog. Dotyczy to tylko crontabów niezainstalowanych przez crontab (1), tj. /etc/cron.d/* i / etc / crontab. Zamyka: # 76625”
Josip Rodin