Почему это управляет для отправки почтовой работы от оболочки, но не как задание крона?

У меня есть проблема с заданиями крона, я должен отправить уведомление по электронной почте пользователям, я использую эту команду

curl "http://example.com/index.php?option=com_community&task=cron">/dev/null 2>&1

Когда я выполняю эту команду в оболочке, она работает, и она посылает электронные письма, но когда я пытаюсь установить задание крона, она не посылает электронные письма:

Вот мой/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 задание крона, вот/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

Вот журнал крона, он показывает, что задание крона работает

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 существует что-то не так?

0
задан 3 August 2014 в 02:30
1 ответ

Вы добавили свой код непосредственно в файл 0anacron?

Вот что здесь не так, не делайте этого.

Проверьте man-страницу для анакрона:

Анакрон может использоваться для периодического выполнения команд, с частотой указанный в днях. В отличие от cron(8), он не предполагает, что машина работает непрерывно.

Очевидно, что это не связано с тем, что вы имеете в виду с вашей электронной почтой, и если вы проверите сценарий, вы можете увидеть, что есть хороший шанс, что он сценарий бы вышел 0, прежде чем прийти к вашей задаче.

В любом случае, попробуйте поместить ваш

curl "http://example.com/index.php?option=com_community&task=cron">/dev/null 2>&1

внутрь файла с именем /etc/cron.hourly/1send_emails. Затем файл будет выполняться почасово, и он должен быть зарегистрирован в вашем cron-журнале аналогично заданию анакрона.

Если вы хотите указать ваше собственное выражение cron, или запустить от имени пользователя, отличного от root, поместите похожий файл с префиксом вашей строки с выражением cron и пользователем для запуска, как и до задания, в /etc/cron.d вместо него.

.
0
ответ дан 5 December 2019 в 13:36

Теги

Похожие вопросы