The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"cron не выполняет задание"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Система. проблемы, диагностика / OpenBSD)
Изначальное сообщение [ Отслеживать ]

"cron не выполняет задание"  +/
Сообщение от slav83 (ok) on 24-Фев-11, 13:21 
Здравствуйте!

Хочу настроить обновление 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 tun0 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 - не помогло;

- Пробовал гугление - не помогло :(

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

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "cron не выполняет задание"  +/
Сообщение от zandyg email(ok) on 24-Фев-11, 13:49 

> # DynDNS
> */10 * * * * /usr/sbin/dyndnsupd

Если используется /etc/crontab, то в шестом поле указывается имя пользователя, от которого выполняется скрипт, т.е правильно будет:
*/10 * * * * root /usr/sbin/dyndnsupd

в случае создания задания через команду crontab, задание будет выполняться от имени пользователя,от которого выполнена команда crontab, в Вашем случае root, видимо, тогда:
*/10 * * * * /usr/sbin/dyndnsupd


Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "cron не выполняет задание"  +/
Сообщение от slav83 (ok) on 24-Фев-11, 13:54 
>> # DynDNS
>> */10 * * * * /usr/sbin/dyndnsupd
> Если используется /etc/crontab, то в шестом поле указывается имя пользователя, от которого
> выполняется скрипт, т.е правильно будет:
> */10 * * * * root /usr/sbin/dyndnsupd
> в случае создания задания через команду crontab, задание будет выполняться от имени
> пользователя,от которого выполнена команда crontab, в Вашем случае root, видимо, тогда:
> */10 * * * * /usr/sbin/dyndnsupd

zandyg, перепробовал эти варианты - безрезультатно! Кроме того, контрольное задание (вывод слова в файл) работает.

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

4. "cron не выполняет задание"  +/
Сообщение от zandyg email(ok) on 24-Фев-11, 14:05 
А если так?:

*/10 * * * * root /usr/local/bin/ipcheck.py -q -d /etc -i tun0 username password domains


Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

5. "cron не выполняет задание"  +/
Сообщение от slav83 (ok) on 24-Фев-11, 14:11 
> А если так?:
> */10 * * * * root /usr/local/bin/ipcheck.py -q -d /etc -i tun0
> username password domains

таким спососбом ругается ipcheck.py на отсутствие моего DNS в базе почему-то и на что-то ещё. Думаю не все параметры берутся из строки крона.
НО, повторюсь, если копипастить (к примеру из кронтаба) путь к файлу скрипта и укузать перед ним sh , то скрипт корректно выполняется без ошибок. Т.е. скрипт рабочий, но вот крон отказывается его запускать с сообщением not found в локальное мыло..

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "cron не выполняет задание"  +/
Сообщение от zandyg email(ok) on 24-Фев-11, 14:39 
Глупый вопрос, но  в crontab есть строки типа?:
SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "cron не выполняет задание"  +/
Сообщение от slav83 (ok) on 24-Фев-11, 14:57 
> Глупый вопрос, но  в crontab есть строки типа?:
> SHELL=/bin/sh
> PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin

zandyg, не считаю вопрос глупым ;)

отвечаю:

1 вариант: я правил существующий кронтаб ( в OpenBSD он тут /var/cron/tabs/root). в нем были строки:

SHELL=/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin
HOME=/var/log

пробовал подсовывать скрипт в пути /bin /usr/bin /usr/sbin (ну и менял пути в табе соответственно). Эффекта нет.

2 вариант: пробовал создать кронтаб командой crontab /root/tabs Файл табс содержал всё ту же строку */10 * * * * /usr/sbin/dyndnsupd  В результате кронтаб /var/cron/tabs/root перезаписался, и кроме коментариев созданныйх командой есть только моя строка */10 * * * * /usr/sbin/dyndnsupd  Но, в локальном мыле с руганью на нанехождения пути есть строки SHELL=/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin
HOME=/var/log
т.е. есть какая-то общая дефолтная настройка и пути эти при выполнении учитываются. Но эффекта нет..

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "cron не выполняет задание"  +/
Сообщение от Pahanivo (ok) on 24-Фев-11, 16:28 
а ты попробуй без обертки выполнить
/usr/local/bin/ipcheck.py -q -d /etc -i tun0 username password domains


Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

10. "cron не выполняет задание"  +/
Сообщение от slav83 (ok) on 24-Фев-11, 20:39 
> а ты попробуй без обертки выполнить
> /usr/local/bin/ipcheck.py -q -d /etc -i tun0 username password domains

без обертки работает!

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

12. "cron не выполняет задание"  +/
Сообщение от Pahanivo (ok) on 24-Фев-11, 20:48 
>> а ты попробуй без обертки выполнить
>> /usr/local/bin/ipcheck.py -q -d /etc -i tun0 username password domains
> без обертки работает!

по моему вывод напрашивается сам собой - дело в кривой обертке
проверяй права и пути

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

13. "cron не выполняет задание"  +/
Сообщение от slav83 (ok) on 24-Фев-11, 21:21 
>>> а ты попробуй без обертки выполнить
>>> /usr/local/bin/ipcheck.py -q -d /etc -i tun0 username password domains
>> без обертки работает!
> по моему вывод напрашивается сам собой - дело в кривой обертке
> проверяй права и пути

Нет же. Из командной строки работает и в обертке и без обертки. Именно запуск из хрона не пашет..

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

14. "cron не выполняет задание"  +/
Сообщение от slav83 (ok) on 24-Фев-11, 23:17 
>>> а ты попробуй без обертки выполнить
>>> /usr/local/bin/ipcheck.py -q -d /etc -i tun0 username password domains
>> без обертки работает!
> по моему вывод напрашивается сам собой - дело в кривой обертке
> проверяй права и пути

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

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


*/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

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

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

9. "cron не выполняет задание"  +/
Сообщение от zandyg email(??) on 24-Фев-11, 19:05 
Попробуй добавить PATH=/usr/local/bin в crontab
Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

11. "cron не выполняет задание"  +/
Сообщение от slav83 (ok) on 24-Фев-11, 20:43 
> Попробуй добавить PATH=/usr/local/bin в crontab

Добавил. Всё то же мыло:


Auto-Submitted: auto-generated
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/dynup
: not found

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

3. "cron не выполняет задание"  +/
Сообщение от Pahanivo (ok) on 24-Фев-11, 13:54 
> чем причина, что сделать?

50/50 - либо права либо пути ...

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

15. "cron не выполняет задание"  +/
Сообщение от Алексей email(??) on 06-Дек-11, 15:40 
>> чем причина, что сделать?
> 50/50 - либо права либо пути ...

И чем все закончилось ? решили как то проблему или нет ?


У меня похоже случилась точно такая же ситуация . из строки все работает выполняется , а по крону нехочет (

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру