URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 52691
[ Назад ]

Исходное сообщение
"Как дождаться полного завершения программы с скрипте Perl ?"

Отправлено Harbrok , 24-Янв-05 14:45 
Здравствуйте!!!
Как сделать чтобы в перловом скрипте комп дождался завершения работы Squid'а, а потом начал переименовывать логи??? У меня прикси думает несколько секунд и этих нескольких секунд хватает чтобы прокси успел написать инфу в уже заменненный лог когда сам еще не перенастроен!!!

Скрипть выглядет примерно так

...
system ("/etc/init.d/squid2 stop"); # Завершение Squid
А здесь у меня происходит перенастройка конфига, замена логов и
затем запуск Squid!!!!

Такое очущение что скрипт не дожидается полного останова прокси и выполняет скрипт дальше!!! А у меня трафик из-за этого мешается при перезагрузке и изменениями параметров (прова)!!!


Содержание

Сообщения в этом обсуждении
"Как дождаться полного завершения программы с скрипте Perl ?"
Отправлено zabudkin , 24-Янв-05 14:49 
>Здравствуйте!!!
>Как сделать чтобы в перловом скрипте комп дождался завершения работы Squid'а, а
>потом начал переименовывать логи??? У меня прикси думает несколько секунд и
>этих нескольких секунд хватает чтобы прокси успел написать инфу в уже
>заменненный лог когда сам еще не перенастроен!!!
>
>Скрипть выглядет примерно так
>
>...
>system ("/etc/init.d/squid2 stop"); # Завершение Squid
>А здесь у меня происходит перенастройка конфига, замена логов и
>затем запуск Squid!!!!
>
>Такое очущение что скрипт не дожидается полного останова прокси и выполняет скрипт
>дальше!!! А у меня трафик из-за этого мешается при перезагрузке и
>изменениями параметров (прова)!!!

killall -w squid


"Как дождаться полного завершения программы с скрипте Perl ?"
Отправлено Harbrok , 24-Янв-05 14:53 
>>Здравствуйте!!!
>>Как сделать чтобы в перловом скрипте комп дождался завершения работы Squid'а, а
>>потом начал переименовывать логи??? У меня прикси думает несколько секунд и
>>этих нескольких секунд хватает чтобы прокси успел написать инфу в уже
>>заменненный лог когда сам еще не перенастроен!!!
>>
>>Скрипть выглядет примерно так
>>
>>...
>>system ("/etc/init.d/squid2 stop"); # Завершение Squid
>>А здесь у меня происходит перенастройка конфига, замена логов и
>>затем запуск Squid!!!!
>>
>>Такое очущение что скрипт не дожидается полного останова прокси и выполняет скрипт
>>дальше!!! А у меня трафик из-за этого мешается при перезагрузке и
>>изменениями параметров (прова)!!!
>
>killall -w squid
Мне надо чтобы скрипт дождался пока полностью выполнится команда system


"Как дождаться полного завершения программы с скрипте Perl ?"
Отправлено butcher , 24-Янв-05 15:01 
>Мне надо чтобы скрипт дождался пока полностью выполнится команда system

system() в perl сразу возвращает управление. Используй open:
open(PRG, "/etc/init.d/squid2 stop |") or die;


"Как дождаться полного завершения программы с скрипте Perl ?"
Отправлено Harbrok , 24-Янв-05 15:44 
>>Мне надо чтобы скрипт дождался пока полностью выполнится команда system
>
>system() в perl сразу возвращает управление. Используй open:
>open(PRG, "/etc/init.d/squid2 stop |") or die;
А по моему тагда проще использовать PID процесса :)



"Как дождаться полного завершения программы с скрипте Perl ?"
Отправлено chip , 24-Янв-05 23:11 
>...
>system ("/etc/init.d/squid2 stop"); # Завершение Squid


sleep(1) while (kill(0, $pid)); после system подойдет ?


"Как дождаться полного завершения программы с скрипте Perl ?"
Отправлено Асен Тотин , 25-Янв-05 01:20 
Привет,

> system() в perl сразу возвращает управление

Коллега, с чего вы это так? Выдержка из "man perlfunc":

system PROGRAM LIST
       Does exactly the same thing as "exec LIST", except that a fork
       is done first, and the parent process waits for the child pro-
       cess to complete.

WWell,



"Как дождаться полного завершения программы с скрипте Perl ?"
Отправлено butcher , 25-Янв-05 08:37 
>Коллега, с чего вы это так? Выдержка из "man perlfunc":

да, извиняюсь.. запямятовал, что я специально для этого форкал system...


"Как дождаться полного завершения программы с скрипте Perl ?"
Отправлено Андрей , 25-Янв-05 03:58 
>Здравствуйте!!!
>Как сделать чтобы в перловом скрипте комп дождался завершения работы Squid'а, а
>потом начал переименовывать логи???
squid  -k rotate