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

Исходное сообщение
"как запустить фоновый процесс и дождаться его завершения из скрипта ?"

Отправлено Zolg , 12-Янв-07 13:13 
Для диагностики периодически возникающей неисправности в сети необходимо при определенном условии (падение ppp-линка) запустить одновременно несколько ping'ов, перенаправив их вывод в файлы, дождаться их завершения, склеить выходные файлы и отправить на мыло. Вопрос в том, как из шел скрипта запустить несколько [одновременно работающих] процессов и дождаться их завершения ?
спасибо.

Содержание

Сообщения в этом обсуждении
"как запустить фоновый процесс и дождаться его завершения из ..."
Отправлено EL , 12-Янв-07 14:32 
>Для диагностики периодически возникающей неисправности в сети необходимо при определенном условии (падение
>ppp-линка) запустить одновременно несколько ping'ов, перенаправив их вывод в файлы, дождаться
>их завершения, склеить выходные файлы и отправить на мыло. Вопрос в
>том, как из шел скрипта запустить несколько [одновременно работающих] процессов и
>дождаться их завершения ?
>спасибо.

А зачем так сложно? Есть fping


"как запустить фоновый процесс и дождаться его завершения из ..."
Отправлено Zolg , 12-Янв-07 15:19 
спасибо, то что нужно !



"как запустить фоновый процесс и дождаться его завершения из ..."
Отправлено ctax , 12-Янв-07 15:17 
>Для диагностики периодически возникающей неисправности в сети необходимо при определенном условии (падение
>ppp-линка) запустить одновременно несколько ping'ов, перенаправив их вывод в файлы, дождаться
>их завершения, склеить выходные файлы и отправить на мыло. Вопрос в
>том, как из шел скрипта запустить несколько [одновременно работающих] процессов и
>дождаться их завершения ?
>спасибо.


for COUNT in `seq 3`
do
    ping -c 3 ya.ru  2>&1 >ping.log$COUNT
done

while [ -n `ps | grep ping | grep -v grep` ]
do
    sleep 1
done

cat ping.log* >PING.log

rm -f ping.log*


"как запустить фоновый процесс и дождаться его завершения из ..."
Отправлено Zolg , 12-Янв-07 15:32 
чисто из любопытства: а более элегантного способа, чем поллинг пинга в списке процессов нет ? не знаток юниксового программинга, но под WinAPI это было бы что-то вроде
handles[i] = CreateProcess(...);
WaitForMultiplyObjects(handles,...);


"как запустить фоновый процесс и дождаться его завершения из ..."
Отправлено ctax , 12-Янв-07 15:56 
>чисто из любопытства: а более элегантного способа, чем поллинг пинга в списке
>процессов нет ? не знаток юниксового программинга, но под WinAPI это
>было бы что-то вроде
>handles[i] = CreateProcess(...);
>WaitForMultiplyObjects(handles,...);


>Вопрос в том, как из шел скрипта запустить несколько

ШЕЛ СКРИПТА!!!


"как запустить фоновый процесс и дождаться его завершения из ..."
Отправлено Zolg , 12-Янв-07 16:27 
>ШЕЛ СКРИПТА!!!
ну так це все ж таки не редмондское поделие :) ради любви к искусству полез по манам, как оказалось все совсем не просто (а очень просто):

ping -c 4 host1 > host1.log&
ping -c 4 host2 > host2.log&
ping -c 4 host3 > host3.log&
wait



"как запустить фоновый процесс и дождаться его завершения из ..."
Отправлено newser , 12-Янв-07 17:00 
>>ШЕЛ СКРИПТА!!!
>ну так це все ж таки не редмондское поделие :) ради любви
>к искусству полез по манам, как оказалось все совсем не просто
>(а очень просто):
>
>ping -c 4 host1 > host1.log&
>ping -c 4 host2 > host2.log&
>ping -c 4 host3 > host3.log&
>wait

Ага, а еще можно ждать определенный процесс:

ping -c 4 host1 > host1.log &
pid=$!
...
wait $pid

ну и т.д. В общем, всяких возможностей много. :)


"как запустить фоновый процесс и дождаться его завершения из ..."
Отправлено ctax , 13-Янв-07 11:44 
>>ШЕЛ СКРИПТА!!!
>ну так це все ж таки не редмондское поделие :) ради любви
>к искусству полез по манам, как оказалось все совсем не просто
>(а очень просто):
>
>ping -c 4 host1 > host1.log&
>ping -c 4 host2 > host2.log&
>ping -c 4 host3 > host3.log&
>wait


Не знал про wait :). Действительно так намного лучше