Kucher2 122 Опубликовано: 2010-05-11 07:12:45 Share Опубликовано: 2010-05-11 07:12:45 Ку. 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 Ссылка на сообщение Поделиться на других сайтах
Ajar 90 Опубліковано: 2010-05-11 10:15:46 Share Опубліковано: 2010-05-11 10:15:46 Ку. FreeBSD 8.0, STG, apache, php - в общем стандартный набор. Имеется нижеследующий скрипт. Его цель - прохождение всех юзеров СТГ и проверка поля "'Userdata0" в файле "conf" каждого юзера. Из под рута всё пашет как часы, но вот из под крона - наблюдаю в проверочном "/var/stargazer/wm/control.txt", что скрипт прекращает работу, не соблюдая условия цикла "while [ $a \> 0 ]", т.к. $a всё ещё не равно 0. Проверял права - они везде одинаковые, пробовал делать смещение цикла - он всё равно отрабатывает примерно 150 раз и по странной причине не желает проходить полностью. Просьба помочь, уже просто кончились идеи. мож и криво , но должно помочь "nohup script_name &" Ссылка на сообщение Поделиться на других сайтах
Kucher2 122 Опубліковано: 2010-05-11 10:20:18 Автор Share Опубліковано: 2010-05-11 10:20:18 Это в задании на крон писать? Не помогло. Ссылка на сообщение Поделиться на других сайтах
Kucher2 122 Опубліковано: 2010-05-11 17:07:50 Автор Share Опубліковано: 2010-05-11 17:07:50 Хм. :/ Написал в /var/cron/tabs/root так: */5 * * * * /var/stargazer/wm/speed.sh > /var/stargazer/wm/err.txt 2>&1 ... и скрипт начал отрабатывать полностью. Мистика. Здорово что работает, но мне не совсем понятно почему; и нельзя ли перенаправлять вывод куда-нибудь "в никуда", чтобы не засорять левыми файлами винт. Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВхід
Уже зарегистрированы? Войдите здесь.
Войти сейчас