PDA

Показать полную графическую версию : Вопрос по Cron!


Gef
02-09-2010, 00:05
Добрый день! Вообщем такая задача стоит!
При обрыве l2TP соединения нужно автоматический переконект!
Скрипт выглядит так:

#!/usr/bin/perl
chomp($isi=`/bin/ping -c 3 173.194.37.104|grep "64 bytes"|wc -l`);
if (not($isi>0)) {
system("date");
printf("Restart Inet\n");
system("echo `date` PPP restarted by timeout... >> /var/log/inetrestart.log");
system("/usr/sbin/xl2tpd stop");
sleep(5);
system("/usr/sbin/xl2tpd start");}
else {
system("echo `date` PPP works ok! >> /var/log/inetrestart.log");
}

В cron прописано:

0-59 * * * * /home/mkr/inetrestart

ак вот при прямом запуске скрипта скрипт выполняется, из под кроне нет!
В логе крона всё нормально!

Где собака зарыта???

Kent
02-09-2010, 00:59
А что в логе пишет? И в каком кронтабе задание?

Telepuzik
02-09-2010, 12:39
Gef
Cron перезапускали?

Serenikii
02-09-2010, 15:36
1 вариант
1. Вводишь crontab -e
2. Добавляешь пробел
3. Сохраняешься и выходишь - таблица крона обновилась (перезапуск не нужен)

2 вариант
1. Проверяешь от имени какого пользователя запускается крон
2. Делаешь су <имя пользователя крона>
3. Проверяешь, запускается ли скрипт

Gef
02-09-2010, 16:08
пасибо за ответ! Крон перезапускал! В мыльном письме приходит что синтаксис ОК! В своём логе пишет, что задание запущено! В чём трабл?

Kent
02-09-2010, 16:20
В чём трабл? »
Трабл в том, что вы не можете нормально ответить на вопросы.

Я просил привести строку из лога и указать в каком кронтабе находится задание.

Gef
02-09-2010, 16:37
Задание находится под рутом! Лог привести не могу щас, вечерем дам, инет на той стороне отсох!

Gef
02-09-2010, 19:51
Вот что в логе:

/usr/sbin/cron [2877]: (root) CMD (/home/mkr/inetrestart)
/usr/sbin/cron [2881]: (root) CMD (/home/mkr/inetrestart)

Срабатует каждую минуту!

Вот что приходит на мыло:

/home/mkr/inetrestart syntax OK

Такие вот дела....

Kent
02-09-2010, 21:59
/home/mkr/inetrestart syntax OK »
"syntax OK" показывает, что производится проверка синтаксиса, а не запуск скрипта. Это perl запускается с опцией -c
А вот почему, непонятно.

Gef
03-09-2010, 12:59
Так в каком направлении копать?

ch3burashka
03-09-2010, 16:52
chmod 744 /home/mkr/inetrestart --> executable flag присутствует?

в крайнем случае я бы попробовал написать shell wrapper:

#!/bin/bash
. $HOME/.bash_profile
/home/mkr/inetrestart

Gef
03-09-2010, 19:25
Да, на исполнение файлик стоит! Скрипт просто запускает перловский скрипт, ятак понимаю! А этот скрипт надобно прописать в кроне?

Alan85
03-09-2010, 23:09
покажи вывод файла /var/spool/cron/crontabs

ch3burashka
04-09-2010, 13:19
вот простенький bash скрипт, кот. делает тоже самое

PS я его не проверял

#!/bin/bash

. $HOME/.bash_profile

export IP2CHK="173.194.37.104"
export LOG=/var/log/inetrestart.log

ping -c 3 ${IP2CHK} &>/dev/null
if [ "$?" -ne "0" ]; then
echo "[`date '+%Y-%m-%d %H:%M:%S'`] PPP restarted by timeout..." | tee -a ${LOG}
/etc/init.d/xl2tpd restart
else
echo "[`date '+%Y-%m-%d %H:%M:%S'`] PPP works ok!" >> ${LOG}
fi

Gef
07-09-2010, 14:20
Спасибо огромное за ответы! Сейчас столкнулся с такой проблеммой!
Поменял полность железо: Мать, процы, память....
При загрузке не может определить разделы и вывалюется в шелл!!!
Систему перестонавливать не охота, уж много чего на ней крутится!
Как победить???? Бьюсь дней 5 уже.....




© OSzone.net 2001-2012