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

<p>я предпочитаю помещать запланированные задачи в/etc/crontab, чтобы сразу увидеть, что запланировано запустить, независимо от того, от какого пользователя запускается задача.</p><p>единственный недостаток в том, что формат не проверяется при сохранении, в отличие от crontab -e - поэтому случайный символ может спокойно разбить весь cron.</p><p>есть ли способ проверить формат/etc/crontab до/после сохранения?</p>

<p>единственный надежный способ, который я нашел, это проверить журнал.</p><p><code>cron</code> проверяет <code>/etc/crontab</code> каждую минуту и регистрирует сообщение, указывающее, что оно перезагрузило его или обнаружило ошибку.</p><p>итак, после редактирования запустите это:</p><pre><code>sleep 60; grep crontab /var/log/syslog | tail </code></pre><p>или не ждать целую минуту, а только до следующей минуты + 5 секунд:</p><pre><code>sleep $(( 60 - $(date +%s) + 5 )) && grep cron /var/log/syslog | tail </code></pre><p>пример вывода с ошибкой:</p><pre><code>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) </code></pre><p>хороший выход:</p><pre><code>jan 9 19:19:01 r530a cron[107258]: (*system*) reload (/etc/crontab) </code></pre><p>это на debian 8. в других системах cron может войти в другой файл.</p><p>(я думал, что смогу избежать поиска правильного файла журнала, используя системный <code>journalctl -u cron</code>, но это не показывало мне эти записи в журнале, и фактически, кажется, прекратило регистрировать события cron 2 дня назад по какой-то причине)</p>

<p>другое более свежее решение - это python script <a href="https://pypi.python.org/pypi/chkcrontab">chkcrontab</a> </p>

<p> <a href="https://www.nostarch.com/wcss2/">wicked крутые скрипты shell</a> имеет скрипт shell, который проверяет файлы crontab.</p><p>вы можете получить zip-архив, содержащий скрипт <a href="https://www.nostarch.com/download/wickedcoolshellscripts2e\_resources\_updated.zip">здесь</a> </p><p>сценарий называется <strong> verifycron </strong></p>

<p>я нашел это классное решение здесь: <a href="https://crontab.guru">https://crontab.gur</a> </p><p>он не просто проверяет crontab, он говорит вам явно, что и когда будет запущен crontab, и подскажет, где находятся ошибки.</p>

<p>в ubuntu кажется, что я могу просто запустить:</p><pre><code>crontab path/to/crontab/file </code></pre><p><strong>примечание: это побочный эффект запуска этого cronjob (спасибо @nzd)</strong></p><p>если файл недействителен, я выдам ошибку, например:</p><pre><code>"crontab":11: bad minute errors in crontab file, can't install. </code></pre>