it-swarm-ru.tech

Есть ли способ проверить формат / etc / crontab?

Я предпочитаю помещать запланированные задачи в/etc/crontab, чтобы сразу увидеть, что запланировано запустить, независимо от того, от какого пользователя запускается задача.

Единственный недостаток в том, что формат не проверяется при сохранении, в отличие от crontab -e - поэтому случайный символ может спокойно разбить весь cron.

Есть ли способ проверить формат/etc/crontab до/после сохранения?

37
Ben K.

Единственный надежный способ, который я нашел, это проверить журнал.

cron проверяет /etc/crontab каждую минуту и ​​регистрирует сообщение, указывающее, что оно перезагрузило его или обнаружило ошибку.

Итак, после редактирования запустите это:

sleep 60; grep crontab /var/log/syslog | tail

Или не ждать целую минуту, а только до следующей минуты + 5 секунд:

sleep $(( 60 - $(date +%S) + 5 )) && grep cron /var/log/syslog | tail

Пример вывода с ошибкой:

Jan  9 19:10:57 r530a cron[107258]: Error: bad minute; while reading /etc/crontab
Jan  9 19:10:57 r530a cron[107258]: (*system*) ERROR (Syntax error, this crontab file will be ignored)

Хороший выход:

Jan  9 19:19:01 r530a cron[107258]: (*system*) RELOAD (/etc/crontab)

Это на Debian 8. В других системах cron может войти в другой файл.

(Я думал, что смогу избежать поиска правильного файла журнала, используя системный journalctl -u cron, но это не показывало мне эти записи в журнале, и фактически, кажется, прекратило регистрировать события cron 2 дня назад по какой-то причине)

20
mivk

Другое более свежее решение - это python script chkcrontab

14
Dave Wongillies

Wicked крутые скрипты Shell имеет скрипт Shell, который проверяет файлы crontab.

Вы можете получить Zip-архив, содержащий скрипт здесь

Сценарий называется verifycron

11
Ludwig Weinzierl

Я нашел это классное решение здесь: https://crontab.gur

Он не просто проверяет crontab, он говорит вам явно, что и когда будет запущен crontab, и подскажет, где находятся ошибки.

3
JDS

В Ubuntu кажется, что я могу просто запустить:

crontab path/to/crontab/file

ПРИМЕЧАНИЕ: это побочный эффект запуска этого cronjob (спасибо @NZD)

Если файл недействителен, я выдам ошибку, например:

"crontab":11: bad minute
errors in crontab file, can't install.
0
conradkdotcom