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

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

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

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

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

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

Задача cron выполняется в соответствии с файлом /var/log/cron.log.

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

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

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

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

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

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

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

 #!/bin/bash 

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

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

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

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

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

Является ли пользователь «noc» тем, у кого работает скрипт? Если нет, уверены ли вы, что пользователь, выполняющий cron-скрипт, имеет доступ для чтения / записи через / home / noc в файл email.log?

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

 #!/bin/bash echo "Bing!" 

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

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

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 ?

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

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

 touch /home/noc/email.log chmod 666 /home/noc/email.log 

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

  #!/bin/bash -x 

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

Запуск подоболочки с опцией -x (e X plicit), которая будет запускать весь скрипт в режиме отладки. Следы каждой команды плюс ее аргументы печатаются на стандартный вывод после того, как команды были расширены, но до их выполнения.

  • Ноутбук Toshiba A200 под управлением Ubuntu зависает / зависает при подключении
  • Установка частоты процессора по умолчанию в Ubuntu?
  • Rip DVD в Linux
  • Ubuntu - Создайте ссылку на указанный каталог, чтобы я мог легко перейти на этот каталог
  • Почему пользователь elasticsearch работает с SSHD?
  • Для двойной загрузки с SSD с 2 ТБ HD для данных, я должен использовать UEFI?
  • Как поменять «fn» использование функциональных клавиш на Apple Keyboard в Linux
  • Windows 7 + Ubuntu с двойной загрузкой + UEFI BIOS
  • VPN-соединение с VirtualBox
  • Как извлечь звук из DVD-фильма в mp3
  • Как экспортировать расширения Google Chrome?
  • Давайте будем гением компьютера.