Cron не работает скрипты

Я искал несколько причин, которые могли бы вызвать мою проблему без удачи. Кажется, проблема чрезвычайно специфическая: на моем сервере под управлением LTS 10.04 неправильно выполняются сценарии, связанные с использованием Интернета. Я пытаюсь обновить динамический DNS с моего сервера, чтобы мой домен всегда указывал на мой сервер. Я ssh на свой сервер, чтобы внести изменения, и он всегда работает.

Есть два места, где я поместил скрипт cron:

1) Добавьте crontab, используя crontab -e для текущего пользователя

2) Добавьте файл в /etc/cron.d/ (тоже два разных файла)

Я убедился, что они принадлежат пользователю root и имеют биты доступа для владельца.

Исключая несколько вещей:

1) Все скрипты cron отлично работают на моем ноутбуке, который также 10.04 LTS

2) Оба сценария отлично работают при запуске из командной строки.

3) На сервере, если я согласен "привет" к файлу, используя cron, каждую минуту это действительно работает

Более простой из двух скриптов для запуска имеет такую ​​конфигурацию:

* * * * * root /usr/bin/wget "-q --read-timeout=0.0 --waitretry=5 --tries=10 --background http://freedns.afraid.org/dynamic/update.php?...........

Где я прячу ключ обновления и за ним следует новая строка.

Я чувствую, что это должно быть что-то конкретное в cron, что я упускаю.

У меня также нет файла журнала cron в /var или /var/log

Дайте мне знать, если есть какая-то информация, которую я забыл упомянуть.

1 ответ

Решение
  • Знаете ли вы, что сообщения об ошибках cron / STDERR попадают в системную почту? Если вы не настроили его, вы можете быстро проверить /var/mail/your_username, Он называется Unix Movemail в Thunderbird, но я считаю, что есть и другие имена для того же механизма.
  • Используемая оболочка по умолчанию sh не bash,
  • Знаете ли вы, что среда для работы cron полностью отличается от вашей интерактивной оболочки? Чтобы проверить это, я создал задание cron:

* * * * * /tmp/testscript.sh

Содержание /tmp/testscript.sh является:

#!/bin/bash
set

Я получил письмо со следующим содержанием (обратите внимание, что PATH сильно отличается, сравните его с set из командной строки:

BASH=/bin/bash
BASHOPTS=cmdhist:extquote:force_fignore:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
BASH_CMDS=()
BASH_LINENO=([0]="0")
BASH_SOURCE=([0]="/tmp/testscript.sh")
BASH_VERSINFO=([0]="4" [1]="2" [2]="24" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu")
BASH_VERSION='4.2.24(1)-release'
DIRSTACK=()
EUID=1000
GROUPS=()
HOME=/home/my_username
HOSTNAME=diablo
HOSTTYPE=x86_64
IFS=$' \t\n'
LANG=en_US.UTF-8
LANGUAGE=en_US:en
LOGNAME=jhendrix
MACHTYPE=x86_64-pc-linux-gnu
OPTERR=1
OPTIND=1
OSTYPE=linux-gnu
PATH=/usr/bin:/bin
PPID=623
PS4='+ '
PWD=/home/my_username
SHELL=/bin/sh
SHELLOPTS=braceexpand:hashall:interactive-comments
SHLVL=1
TERM=dumb
UID=1000
_=/bin/bash
Другие вопросы по тегам