LINUX.ORG.RU

cron не выполняет задание


0

1

Здравствуйте!

Хочу настроить обновление dyndns как сказано тут: http://openbsd-wiki.org/index.php?title=DynDNS на OpenBSD 4.8

Вся работа проводилась от пользователя root. Создал файл-скрипт обновления dyndnsupd, его содержимое:

#!/bin/sh

/usr/local/bin/ipcheck.py -q -d /etc -i <if> <username> <password> <domains>

Дал права файлу на выполнение всем и всем группам 10777

В кронтаб прописал:

# DynDNS

*/10 * * * * /usr/sbin/dyndnsupd

в логе крона пишет, что выполняет скрипт. Ошибок в логе нет. Но скрипт не выполняется. Если забить в командную строку

sh /usr/sbin/dyndnsupd

то скрипт отрабатывает и dyndns запись обновляется. Создал параллельное задание - контрольное. Контрольное задание выполняется, скрипт - нет. В локальное мыло приходит следующее сообщение (цитирую только текст письма):

sh: /usr/sbin/dyndnsupd :not found

- Пробовал создавать кронтаб командой crontab путь к файлу с рутовским табом - не помогло;

- Пробовал править синтаксис таба: ставить везде знаки табуляции, или наоборот пробелы, оставлять возврат каретки в конце таба или строку с комментариями - не помогло;

- Пробовал ставить перед командой в табе sh, /bin/sh - не помогло;

- Пробовал класть скрипт в другие папки: в папку /root, в папку /home, в папку /bin - не помогло;

- Гугление - не помогло :(

Подскажите, в чем причина, что сделать?

slav83> Дал права файлу на выполнение всем и всем группам 10777

10777 ?

Это что такое?

sh: /usr/sbin/dyndnsupd :not found

Сделай так чтобы нашел, делов то.

sdio ★★★★★ ()
Ответ на: комментарий от uspen

Нет. редактирую этот: /var/cron/tabs/root Или редактирую его командой crontab /путь к файлу своего таба. Команда опять таки вносит праильные изменения в /var/cron/tabs/root проверяя синтаксис

slav83 ()
Ответ на: комментарий от uspen

uspen, 10777 это права всем пользователям и группам на чтение, редактирование и исполнение файла. Полные права всем на всё - сделал, чтобы исключить ошибку с доступом.

slav83 ()

Вот тут проблема «Дал права файлу на выполнение всем и всем группам 10777» и тут «sh: /usr/sbin/dyndnsupd :not found»

mr_D ()
Ответ на: комментарий от mr_D

mr_D, в чем конкретно проблема? Файл доступен для демона cron. Пути абсолютные. Проверял их. Но демон крон пишет что не может найти файл. Логика сообщения в локальном мыле не понята..

slav83 ()
Ответ на: комментарий от Tanger

Tanger, ddclient пробовал, но на что-то он ругался, погуглил ошибку, не нашел, дальше разбираться не стал. ipcheck.py - без проблем завелся. Но хочется разобраться с кроном - вопрос принципиальный т.к. шедулер должен работать.

slav83 ()

Покажите вывод:

ls -l /bin/sh ls -l /usr/sbin/dyndnsupd ls -l /usr/local/bin/ipcheck.py

Убедитесь, что сняты флаги uid и gid

azure ★★ ()
Ответ на: комментарий от slav83

Вывод:

# ls -l /bin/sh -r-xr-xr-x 3 root bin 384084 Aug 16 2010 /bin/sh

# ls -l /root/dynup -rwxrwxrwx 1 root wheel 119 Feb 24 19:53 /root/dynup

# ls -l /usr/local/bin/ipcheck.py -r-xr-xr-x 1 root bin 158847 Aug 11 2010 /usr/local/bin/ipcheck.py

anonymous ()
Ответ на: комментарий от anonymous

если строку в крон запихать, то крон ругается мылом:

sh: grep: not found

ipcheck.py: WARNING Unknown domain: ХХХ.homeip.net

ipcheck.py: If the domain is listed at http://www.dyndns.org/services/dyndns/domains.html

ipcheck.py: then email kal@users.sourceforge.net to add the domain.

ipcheck.py: Otherwise, you should be using -c for custom domains.

ipcheck.py: No address found on interface tun0 use -i

anonymous ()
Ответ на: комментарий от temporary

# ls -l /usr/sbin/dyndnsupd -rwxrwxrwx 1 root wheel 88 Feb 23 14:42 /usr/sbin/dyndnsupd

anonymous ()
Ответ на: комментарий от anonymous

Судя по всему, дело не в скрипте вовсе.

Очистил кронтаб, создал другой кронтаб с содержимым

*/1 * *   * * /root/test

создал файл /root/test с содержимым

echo «test mesage» > /root/2

Т.е. скрипт выводит тестовое сообщение в файл /root/2 - его я тоже создал, права всех файлов изменил. И опять тоже мыло локальное:

X-Cron-Env: <PATH=/usr/local/bin> X-Cron-Env: <SHELL=/bin/sh> X-Cron-Env: <HOME=/root> X-Cron-Env: <LOGNAME=root> X-Cron-Env: <USER=root>

/bin/sh: /root/test : not found

Т.е. мой крон вообще никаких файлов «не видит».. ОС недавно установлена, на неё только самбу да вебмин поставить успел.

slav83 ()
Ответ на: комментарий от slav83

в фаре нужно сохранять Shift+F2 - «Изменить перевод строки» - «в формате UNIX (LF)»

по приведённому сообщению похоже, что у вас виндовые переносы строк (^M), поэтому срипт не находится.

anonymous ()
Ответ на: комментарий от anonymous

Да... похоже на праду... в логе крона строки что-то с символами ^M, хотя слов об ошибке нет.. СПАСИБО! Попробую - сразу отпишу.

slav83 ()
Ответ на: комментарий от slav83

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

temporary ★★ ()
Ответ на: комментарий от anonymous

Да, действительно виндовые переносы ^M, видимые только напрямую в OpenBSD портили всё дело. Убрал их, пересоздал кронтаб - всё заработало!

Всем спасибо!

slav83 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.