Перейти до

Crontab - некорректная работа скриптов


Рекомендованные сообщения

Ку. :mellow:

 

FreeBSD 8.0, STG, apache, php - в общем стандартный набор.

 

Имеется нижеследующий скрипт. Его цель - прохождение всех юзеров СТГ и проверка поля "'Userdata0" в файле "conf" каждого юзера.

Из под рута всё пашет как часы, но вот из под крона - наблюдаю в проверочном "/var/stargazer/wm/control.txt", что скрипт прекращает работу, не соблюдая условия цикла "while [ $a \> 0 ]", т.к. $a всё ещё не равно 0.

Проверял права - они везде одинаковые, пробовал делать смещение цикла - он всё равно отрабатывает примерно 150 раз и по странной причине не желает проходить полностью.

Просьба помочь, уже просто кончились идеи. :)

 

#!/bin/sh

/bin /sbin /usr/bin/ /usr/local/bin/ /usr/sbin/ /usr/local/sbin/

/bin/echo "" > /var/stargazer/wm/control.txt

#Put' k sgconf
sgconf="/var/stargazer/wm/sgconf set -s 10.0.0.10 -p 5555 -a admin -w pass -u"

#Poluchaem spisok userov
/bin/ls /var/stargazer/users > /var/stargazer/wm/userlist

#Delayem cikl i perebirajem vsex
a=`/usr/bin/grep -c "." /var/stargazer/wm/userlist`
a=`/bin/expr $a + 0`

g=0

while [ $a \> 0 ]
do

user=`/usr/bin/awk NR==$(($g+1)) /var/stargazer/wm/userlist`

#Tut ukazyvaem svoy Userdata
speed=`/usr/bin/grep 'Userdata0=' /var/stargazer/users/$user/conf | cut -d '=' -f2`


#Esli schetchik = 0
if [ $speed \= 0 ]
then
speed=-1
fi

speed=$(($speed + 0))

#Esli schetchik > 0
if [ $speed \> 0 ]
then

# vychitaemoe znachenie dolgno sovpadat' s periodom zapuska scripta po cron
# v dannom sluchae eto 5 minut
# perezapisyvaem schetchik. Zdes' toje UD ukazyvaem svoj
$sgconf $user --ud0 `echo "$speed - 5" | bc -l`
fi

#Esli schetchik < 0
if [ $speed \< 0 ]
then
#ochishaem schetchik, esli vremya vyshlo
#zdes' toje UD ukazyvaem svoj
$sgconf $user --ud0 ""
#Perepodkclychaem usera
$sgconf $user -d 1
$sgconf $user -d 0
#Pishem v log
/bin/echo "`/bin/date +%d.%m.%Y-%H.%M.%S` User <$user> - end service Speed" >> /var/stargazer/wm/wm.log
fi

g=$(($g + 1))
a=$(($a - 1))

/bin/echo $user" "$speed"-"$a"_"$g >> /var/stargazer/wm/control.txt

done

exit

Ссылка на сообщение
Поделиться на других сайтах

Ку. :mellow:

 

FreeBSD 8.0, STG, apache, php - в общем стандартный набор.

 

Имеется нижеследующий скрипт. Его цель - прохождение всех юзеров СТГ и проверка поля "'Userdata0" в файле "conf" каждого юзера.

Из под рута всё пашет как часы, но вот из под крона - наблюдаю в проверочном "/var/stargazer/wm/control.txt", что скрипт прекращает работу, не соблюдая условия цикла "while [ $a \> 0 ]", т.к. $a всё ещё не равно 0.

Проверял права - они везде одинаковые, пробовал делать смещение цикла - он всё равно отрабатывает примерно 150 раз и по странной причине не желает проходить полностью.

Просьба помочь, уже просто кончились идеи. :)

 

 

 

мож и криво , но должно помочь "nohup script_name &"

Ссылка на сообщение
Поделиться на других сайтах

Хм. :/

Написал в /var/cron/tabs/root так:

 

*/5 * * * * /var/stargazer/wm/speed.sh > /var/stargazer/wm/err.txt 2>&1

 

... и скрипт начал отрабатывать полностью. Мистика. Здорово что работает, но мне не совсем понятно почему; и нельзя ли перенаправлять вывод куда-нибудь "в никуда", чтобы не засорять левыми файлами винт.

Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.

×
×
  • Створити нове...