cron запускается, но ничего не происходит

Я создал скрипт под названием "forward_email.sh" и установите разрешения 777. Он содержит следующую строку:

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

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

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

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

задание cron выполняется в соответствии с параметром "/var/log / cron.журнал.

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

обновление: я совершил очень глупую ошибку. Я назвал свой сценарий "forward_mail.sh". Я не был, пока я не установил некоторые службы электронной почты и получил следующее сообщение об ошибке от Cron, что я обнаруживаю свою ошибку.

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

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

9
задан Joseph
10.11.2022 19:46 Количество просмотров материала 3369
Распечатать страницу

4 ответа

много потенциальных вещей с головы до головы.

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

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

#!/bin/bash

...в верхней части вашего скрипта, чтобы заставить его работать.

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

попробуйте уменьшить ваш скрипт

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

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

является ли пользователь 'noc' запускающим скрипт? Если нет, вы уверены, что пользователь, запускающий скрипт cron, имеет доступ на чтение/запись через /home/noc к электронной почте.файл журнала?

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

#!/bin/bash
echo "Bing!"

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

Are cron.запретить и / или cron.разрешить играть? Если /etc / cron.allow существует, тогда в нем должен быть указан пользовательский noc; если /etc / cron.отрицание существует. пользователь noc должен не быть перечислены в нем. На RedHat, если ни cron.разрешить или хрон.запретить существование, то только пользователь root сможет использовать cron.

6
отвечен David Mackintosh 2022-11-12 03:34

cron работает с ограниченным набором переменных окружения, особенно $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?

5
отвечен Pete 2022-11-12 05:51
echo "It worked: $(date)" >> /home/noc/email.log

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

touch /home/noc/email.log
chmod 666 /home/noc/email.log
1
отвечен pgs 2022-11-12 08:08

Если у вас есть какие-либо сомнения по поводу вашего скрипта, поставить строчкой ниже в верхней части скрипта:

 #!/bin/bash -x

(Если вы не используете эту оболочку, просто поставить хороший)

запуск подоболочки с -x (eXplicit) опция, которая будет запускать весь скрипт в режиме отладки. Трассировки каждой команды и ее аргументы выводятся на стандартный вывод после развертывания команд, но до их выполнения.

0
отвечен DeaconFraust 2022-11-12 10:25

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх