cron выполняет только часть скрипта

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Avendeil
рядовой
Сообщения: 20
Зарегистрирован: 2011-09-19 16:30:33

cron выполняет только часть скрипта

Непрочитанное сообщение Avendeil » 2012-09-04 20:53:56

Приветствую!
Проблема вроде обычная для крона и начинающих - вручную запускаю скрипт все ОК, из крона не ок. Сам скрипт вот:

Код: Выделить всё

#!/bin/sh

TIMENAME=`date +%d.%m.%Y-%H.%M`

Count=0
asterisk -rx "sip show channels" | while read line
do
cutline=$(echo $line | cut -c1-10)
 if [ "$cutline" = "ip adress" ];  then
   Count=`expr ${Count} + 1`
   echo "Sessions: $Count Date: $TIMENAME" > /tmp/countpeterstarfile
 fi
done
cat /tmp/countpeterstarfile >> /var/log/SipSessions.log
rm /tmp/countpeterstarfile
Выполняется только то что находится не в теле цикла.
Поясню почему используется файл /tmp/countpeterstarfile. Изначально просто использовалась переменная Count, но это вызвало довольно забавное явление, после выхода из цикла переменной возвращалось то значение, которое у нее было до цикла. Гугл подсказал что это вызвано использованием канала из за которого запускается дочерний процесс в котором и выполняется цикл. Все встало на свои места, но пришлось использовать файл для хранения переменной. Скрипт заработал при ручном выполнении. Все радуются. Ага. Щаз.
Крон судя по всему не позволяет запустить дочерний процесс. Можно это как то урегулировать? Или переписывать скрипт без использования pipe?
Спасибо!


ps: небольшие пояснения по скрипту: asterisk -rx "sip show channels" выводит список активных SIP соединений астериска, дальше в этом списке ищутся только те которые относятся к провайдеру. Главная цель их просто посчитать и записать результат в файлик, простая задача, столько хлопот(

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

шёл_мимо
проходил мимо

Re: cron выполняет только часть скрипта

Непрочитанное сообщение шёл_мимо » 2012-09-04 21:42:36

Avendeil писал(а): asterisk -rx "sip show channels" | while read line
Полный путь до asterisk'а пропиши.

Avendeil
рядовой
Сообщения: 20
Зарегистрирован: 2011-09-19 16:30:33

Re: cron выполняет только часть скрипта

Непрочитанное сообщение Avendeil » 2012-09-04 22:04:51

та не, эта часть работает отлично, проверено проблем нет.

шёл_мимо
проходил мимо

Re: cron выполняет только часть скрипта

Непрочитанное сообщение шёл_мимо » 2012-09-04 22:32:44

Avendeil писал(а):та не, эта часть работает отлично, проверено проблем нет.
Если не выполняется, значит путь не найден или писать полный путь или в .profile добавить пути(PATH)
Покажи строку крона.

Avendeil
рядовой
Сообщения: 20
Зарегистрирован: 2011-09-19 16:30:33

Re: cron выполняет только часть скрипта

Непрочитанное сообщение Avendeil » 2012-09-04 22:36:30

Код: Выделить всё

*/5     *          *       *       *       /usr/bin/myscrips/countpeterstarconntections.sh
До того как просто забыл поставить последнюю строчку в скрипте, т.е. не удалялся временный файл, и в итоговый записывалось всегда одно и то же. То что осталось с последнего запуска из консоли.
В кроне еще много чего, бекапы, чистка директорий, конвертирование и тд и тп, все роблет.

шёл_мимо
проходил мимо

Re: cron выполняет только часть скрипта

Непрочитанное сообщение шёл_мимо » 2012-09-05 7:15:34

А так?

Код: Выделить всё

*/5     *          *       *       *   root    /usr/bin/myscrips/countpeterstarconntections.sh

chipset
мл. сержант
Сообщения: 113
Зарегистрирован: 2012-05-12 11:24:30

Re: cron выполняет только часть скрипта

Непрочитанное сообщение chipset » 2012-09-05 8:35:04

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

Avendeil
рядовой
Сообщения: 20
Зарегистрирован: 2011-09-19 16:30:33

Re: cron выполняет только часть скрипта

Непрочитанное сообщение Avendeil » 2012-09-05 20:48:15

крон и так рутовый. Но вообще прописал полные пути, выдал везде права 777, были права 755 и заработало. Чо это так было не понял. Но на будущее учту про использование в скриптах крона всегда полных путей.