Отвечая шесть лет спустя: проблема несоответствия среды является одной из проблем, решаемых systemd
«таймерами» в качестве замены хрон. Независимо от того, запускаете ли вы «service» systemd из CLI или через cron, он получает точно такую же среду, избегая проблемы несоответствия среды.
Наиболее распространенная проблема, приводящая к сбою заданий cron при их ручном прохождении, - это ограничение по умолчанию $PATH
, устанавливаемое cron, например в Ubuntu 16.04:
"/usr/bin:/bin"
В отличие от этого, по умолчанию $PATH
, установленное systemd
в Ubuntu 16.04:
"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Так что уже есть больше шансов, что системный таймер найдет двоичный файл без лишних хлопот.
Недостаток системных таймеров, это немного больше времени для их установки. Сначала вы создаете файл «service», чтобы определить, что вы хотите запустить, и файл «timer», чтобы определить расписание его запуска и, наконец, «включить» таймер, чтобы активировать его.