крон работает, но ничего не происходит

Я создал сценарий, названный "forward_email.sh", и установил полномочия на 777. Это содержит следующую строку:

echo "It worked: $(date)" >> /home/noc/email.log

Я создал задание крона со следующей строкой:

*/5 * * * * /home/noc/forward_email.sh

Проблема состоит в том, что файл "email.log" никогда не изменяется. Я даже установил полномочия на 666. Когда я запускаю скрипт вручную, он работает отлично.

Задание крона работает согласно файлу "/var/log/cron.log".

Кто-то может указать на меня в правильное направление относительно того, что могло бы идти не так, как надо? Это - минимальная установка виртуальной машины Сервера Ubuntu 9.04 с кроном, установленным через Кв. - добираются.

ОБНОВЛЕНИЕ: Я сделал очень глупую ошибку. Я назвал свой сценарий "forward_mail.sh". Я не был, пока я не установил некоторые почтовые сервисы и получил следующую ошибочную электронную почту от Крона, что я обнаруживаю свою ошибку.

/bin/sh: /home/noc/forward_email.sh: not found

Я изменил имя файла, и это работает теперь.

6
задан 04.08.2009, 08:35

3 ответа

Много потенциальных вещей первое, что пришло на ум.

Вы уверены, что crontab запись действительно указывает на Ваш сценарий? Например, если Вы хотите запустить скрипт, такой как ~noc/bin/script.sh, но иметь запись как/home/noc/bin/script (т.е. тонкая опечатка) затем, конечно, он не будет работать. Я обычно проверяю свои crontab записи путем копирования команды из crontab с моей мышью, затем вставки его в командную строку, только чтобы быть на 100% уверенным, что это собирается выполнить то, к чему я хочу это.

Ваш сценарий содержит только обозначенную строку? Обычно необходимо включать что-то как:

#!/bin/bash

... наверху Вашего сценария, чтобы заставить это работать.

Если это более сложно, чем одна строка, действительно ли Вы уверены, что логика программирования разрешит этому выполнять ту конкретную строку?

Попытайтесь уменьшить свой сценарий до

#!/bin/bash
echo "Bing!" >> /tmp/cronjob

... видеть, что происходит. Если это работает, у Вас есть проблема программирования в Вашем сценарии крона. Если это перестало работать, у Вас есть проблема крона.

Действительно ли 'noc' пользователь является тем, запускающим скрипт? В противном случае действительно ли Вы уверены, что у пользователя, запускающего скрипт крона, есть доступ для чтения-записи через/home/noc в файл email.log?

Где ошибочная электронная почта от пользователя выполняющий движение cronjob? Ошибочное электронное письмо сгенерировало и затем посылается где-нибудь, Вы не ожидаете или возможно выводитесь в целом? Попробуйте cronjob

#!/bin/bash
echo "Bing!"

... и затем попытайтесь выяснить, куда электронная почта, которая сгенерирована, идет.

cron.deny и/или cron.allow в игре? Если/etc/cron.allow действительно существует, то пользователь noc должен быть перечислен в нем; если/etc/cron.deny существует. пользователь noc не должен быть перечислен в нем. На Redhat, если ни cron.allow, ни cron.deny не будут существовать, то ТОЛЬКО пользователю root разрешат использовать крон.

8
ответ дан 07.12.2019, 15:34
echo "It worked: $(date)" >> /home/noc/email.log

Делает /home/noc/email.log существуйте, прежде чем Вы запустите скрипт? Действительно ли это перезаписываемо пользователем, выполняющим задание крона? Что происходит, если Вы создаете его заранее? например.

touch /home/noc/email.log
chmod 666 /home/noc/email.log
1
ответ дан 07.12.2019, 15:34

Крон работает с ограниченным набором переменных среды, особенно Ваш $PATH. Попытайтесь поместить полный путь в любые двоичные файлы. Так /home/noc/forward_email.sh должен быть:

/bin/echo "It worked: $(date)" >> /home/noc/email.log

Кроме того, что делает */5 в начале Вашего сценария? */5 выполнения один раз в пять минут, 5 выполнения однажды ’5 минут мимо часа каждый час.

5    *   *   *    * /home/noc/forward_email.sh
#*   *   *   *    *  command to be executed
#-   -   -   -    -
#|   |   |   |    |
#|   |   |   |    +----- day of week (0 - 6) (Sunday=0)
#|   |   |   +------- month (1 - 12)
#|   |   +--------- day of month (1 - 31)
#|   +----------- hour (0 - 23)
#+------------- min (0 - 59)

Наконец, сделал Вы редактируете и сохраняете crontab со следующей командой:

crontab -e

... где Ваш редактор выбран переменной среды $EDITOR?

6
ответ дан 07.12.2019, 15:34

Теги

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