Добавление файла в /etc/cron.d не заставляет его работать (Ubuntu 10.04)

20

Если я добавлю файл cron в /etc/cron.d, он не запустится, если я не отредактирую файл и не изменю команду. Затем кажется, что crond берет файл cron.

Как я могу сделать так, чтобы cron перезагрузил свои файлы cron в Ubuntu 10.04? «прикосновение» к файлу не работает и не перезапускает cron или не перезагружает cron.

Мой файл cron настроен на запуск каждую минуту и ​​записывает в файл. Ничего не попадает в файл журнала, пока я не отредактирую команду, и для нее нет записи в / var / log / syslog

Я в тупике.

Вот мой файл cron, сохраненный в /etc/cron.d/runscript (обратите внимание, что он заканчивается новой строкой)

# 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 &
Том
источник
3
Хорошо, что вы включили пользователя для запуска задания. Я оставил это, что стало причиной моих неприятностей.
Эдвард Андерсон
1
Спустя годы нет принятого ответа? Вы заставили это работать? Я тоже застрял, и общие проблемы не кажутся проблемой.
Twigmac

Ответы:

27

Я только что столкнулся с этой проблемой, и хотя она не отвечает на ваш конкретный случай, она может помочь другим людям найти ту же проблему, так как этот вопрос дает очень высокие результаты.

Я сохранил файл в /etc/cron.d, и он игнорировался. В моем случае это было потому, что я дал файлам расширение.

mytask.cronне работал, но я переименовал его, mytaskи он работал нормально.

Любые файлы с расширениями игнорируются, поэтому убедитесь, что сохраняемый файл не имеет расширения.

Anigel
источник
13
На странице руководства cron (8) в Debian / Ubuntu это довольно четко описывается в эти дни: «Поддержка /etc/cron.d включена в сам демон cron [...] Файлы в этом каталоге [...] должны соответствовать к тому же соглашению об именах, которое используется run-parts (8): они должны состоять только из прописных и строчных букв, цифр, подчеркиваний и дефисов. Это означает, что они не могут содержать никаких точек ».
Иосип Роден
15

Убедитесь, что копируемый файл заканчивается на \n. Записи в crontabs, которые не имеют \nв конце, обычно сталкиваются с проблемами. Самый простой способ убедиться в этом - поставить пустую строку после последней записи.

user9517 поддерживает GoFundMonica
источник
1
Я как раз собирался отредактировать свой вопрос, чтобы сказать, что он заканчивается \ n
том
1
Cron Debian / Ubuntu предупреждает об этом в системном журнале, начиная с версии 3.0pl1-110, выпущенной в 2010 году, ср. запись в журнале изменений: «Записывать в crontabs пропущенную новую строку перед EOF в системный журнал. Это относится только к crontabs, не установленным через crontab (1), т. е. /etc/cron.d/* и / etc / crontab. Закрывает: # 76625»
Josip Роден