LinuxForum.Fans
Тема

crontab не выполняет скрипт.

Автор: semperN 7 сообщений 3743 просмотров
#260254

Есть скрипт для поднятия pptp. Вот так он выглядит:

text

#!/bin/sh

host="8.8.8.8"; num=3

ping -c $num $host > /dev/null 2>&1

if [ $? != 0 ]; then echo `date` ': Перезагрузка инета' >> /var/log/ppp/nktv.log /usr/bin/killall -9 pppd sleep 5 ifdown eth1 sleep 10 ifup eth1 sleep 10 pppd call nktv sleep 10 ip r d default sleep 5 ip r a default dev ppp0 if [ $? = 0 ]; then echo `date` check_net >> /var/log/check_net.log else echo `date`" Автоматическое восстановление связи не удалось" >> /var/log/ppp/nktv.log fi fi

Этот скрипт я добавил под пользователем root командой crontab.

text
crontab -l
0-59 *  *  *  * /etc/ppp/callvpn

И он действительно запускается каждую минуту видно с помощью ps -e | grep calllvpn
Но этот скрипт не может поднять pppd если его запускает cron.
Если я запущу его сам ./callvpn то он выполняется нормально и поднимает интерфейс.
В чем причина подскажите пожалуйста.

#260256

добавь как sh -x /etc/ppp/callvpn 2>&1 >>"/tmp/callvpn-log" и кури то, что получилось.

#260266
semperN написал:

В чем причина подскажите пожалуйста.

Причина в том, что для крона и для юзера по разному настроено окружение (PATH). И половина твоих программ просто не находятся. Надо в скрипте или свой PATH устанавливать, или вызывать программы по полному пути.

#260340
Fat-Zer написал:
добавь как sh -x /etc/ppp/callvpn 2>&1 >>"/tmp/callvpn-log" и кури то, что получилось.

сделал но в этом файле все пусто

#260342
Cruiser78 написал:
[quote=semperN]
В чем причина подскажите пожалуйста.

Причина в том, что для крона и для юзера по разному настроено окружение (PATH). И половина твоих программ просто не находятся. Надо в скрипте или свой PATH устанавливать, или вызывать программы по полному пути.[/quote]
но крон же запускает сам скрипт и логи пишет с этого скрипта.

#260355
"semperN" написал:
сделал но в этом файле все пусто

не знаю особенностей перенаправления потоков в sh и кроне, так что чтобы наверняка:

1. создаёшь файл /tmp/debug.sh

text

#!/bin/sh
LOG_FILE="/tmp/callvpn-$(date +%H:%M).log"
sh -x /etc/ppp/callvpn 2>>$LOG_FILE >>$LOG_FILE

2. добавляешь его в крон
3. куришь
4. ???????????
5. PROFIT!

#260368

Тему можно закрывать.
В скрипте поменял #/bin/sh на #/bin/bash
и в /etc/crontab написал

text

0-59 *  *  *  * root /etc/ppp/callvpn

И все работает

Войдите или зарегистрируйтесь, чтобы ответить.