Linux: не срабатывает crontab

Автор: | 09/18/2018
 

Добавлены задачи для cron, но они не выполняются, и в логах ничего нет.

Файлы добавлены в файле /var/spool/cron/crontabs/admin:

# Puppet Name: proj1/trending/daily
0 21 * * * cd /data/dme && php yii proj1/trending/daily

# Puppet Name: proj1/cron/go
* * * * * cd /data/dme && php yii proj2/cron/go >> /var/log/dme-cron/proj1-cron.log 2>&1

# Puppet Name: proj1/sitemap/last-posts
*/5 * * * * cd /data/dme && php yii proj1/sitemap/last-posts

# Puppet Name: proj1/partnership/partnership/index
...

Причина банальна.

Читаем man crontab:

root@dme-production-master:/data/dme# man crontab | grep -A 3 DIAGNOSTICS | tail -1
cron requires that each entry in a crontab end in a newline character. If the last entry in a crontab is missing the newline, cron will consider the crontab (at least partially) broken and refuse to install it.

Добавляем пустую строку в файл задач:

root@dme-production-master:/data/dme# echo "" >> /var/spool/cron/crontabs/admin

Ждём минуту — проверяем /var/log/syslog:

Sep 11 13:36:01 ip-10-0-8-42 CRON[21398]: (admin) CMD (cd /data/dme && /usr/bin/php yii proj1/sitemap/news)
Sep 11 13:36:01 ip-10-0-8-42 CRON[21400]: (admin) CMD (cd /data/dme && php yii proj1/cron/go >> /var/log/dme-cron/proj1-cron.log 2>&1)
Sep 11 13:36:01 ip-10-0-8-42 CRON[21399]: (admin) CMD (cd /data/dme && /usr/bin/php yii proj2/sitemap/news)
Sep 11 13:36:01 ip-10-0-8-42 CRON[21403]: (admin) CMD (cd /data/dme && php yii proj2/cron/go >> /var/log/dme-cron/proj2-cron.log 2>&1)
...

И появились файлы логов:

root@dme-production-master:/data/dme# ll /var/log/dme-cron/
total 20
-rw-r--r-- 1 admin docker 178 Sep 11 16:36 proj1-cron.log
-rw-r--r-- 1 admin docker 178 Sep 11 16:36 proj2-cron.log
...

Готово.