У меня проблема с заданиями cron, мне нужно отправить пользователям уведомление по электронной почте, я использую эту команду
curl "http://example.com/index.php?option=com_community&task=cron">/dev/null 2>&1
Когда я запускаю эту команду в оболочке, она работает и отправляет электронные письма, но когда я пытаюсь установить задание cron, она не отправляет электронные письма:
Вот мой /etc/cron.d:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
05,45 * * * * root run-parts /etc/cron.hourly
Предполагается, что запускается задание /etc/cron.hourly cron, вот /etc/cron.hourly/0anacron:
#!/bin/bash
# Skip excecution unless the date has changed from the previous run
if test -r /var/spool/anacron/cron.daily; then
day=`cat /var/spool/anacron/cron.daily`
fi
if [ `date +%Y%m%d` = "$day" ]; then
exit 0;
fi
# Skip excecution unless AC powered
if test -x /usr/bin/on_ac_power; then
/usr/bin/on_ac_power &> /dev/null
if test $? -eq 1; then
exit 0
fi
fi
/usr/sbin/anacron -s
curl "http://example.com/index.php?option=com_community&task=cron">/dev/null 2>&1
Вот журнал cron, он показывает, что задание cron запущено
Aug 2 16:45:01 u17669867 CROND[3164]: (root) CMD (run-parts /etc/cron.hourly)
Aug 2 16:45:01 u17669867 run-parts(/etc/cron.hourly)[3164]: starting 0anacron
Aug 2 16:45:01 u17669867 run-parts(/etc/cron.hourly)[3173]: finished 0anacron
Может, что-то не так в /etc/cron.hourly/0anacron?
Вы добавили свой код прямо в 0anacron
файл??
Вот что здесь не так; не делай этого.
проверьте страницу руководства для anacron:
Anacron можно использовать для периодического выполнения команд с частотой, указанной в днях. В отличие от cron (8), он не предполагает, что машина работает постоянно.
Ясно, что это не связано с тем, что вы имеете в виду со своими электронными письмами, и если вы проверите сценарий, то увидите, что есть большая вероятность, что сценарий exited 0
прежде чем приступить к своей задаче.
В любом случае попробуйте поставить
curl "http://example.com/index.php?option=com_community&task=cron">/dev/null 2>&1
Внутри файла с названием что-то вроде /etc/cron.hourly/1send_emails
. Отрежьте его до root и сделайте исполняемым.
Затем файл будет запускаться ежечасно, и он должен регистрироваться в вашем журнале cron аналогично заданию anacron.
Если вы хотите указать свое собственное выражение cron или запускать от имени другого пользователя, а не root, поместите аналогичный файл с вашей строкой с префиксом выражения cron и пользователем для запуска, как и до запуска задания /etc/cron.d
вместо.