Запустите 2 бесконечных цикла параллельно в скрипте и убейте, когда скрипт остановится - PullRequest
0 голосов
/ 03 декабря 2018

Я пишу сценарий, в котором я хочу запустить несколько бесконечных циклов параллельно.

Я попытался запустить затем в фоновом режиме, который работает, но я хочу, чтобы циклы были убиты, когда сценарий останавливается.

пример сценариев:

#### SYNC CALL ####
while true            :: Loop 1 ::
do
sync_stat
sleep $SYNC_TIME 
done &

#### TABLESPACE CALL ####  :: Loop 2 ::
while true
do
tablespace_stat
sleep $TABLESPACE_TIME 
done &

Хотите запустить сценарий, содержащий Loop1 и Loop2, чтобы эти циклы выполнялись одновременно, в фоновом режиме или на переднем плане, и когда сценарий останавливается, циклы должны быть остановлены.

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

у вас есть две опции

Option1 : лучше использовать некоторую переменную с while и изменить ее значение в операторе lopp.

while true
do
x=`sync_stat`
if [ <condition on $x variable> ];
then
break;
fi
sleep $SYNC_TIME 
done &

Option2 : просто запустите сценарий с помощью команды bash bash <script name> и используйте pkill bash, чтобы завершить выполнение сценария в любое время.

0 голосов
/ 03 декабря 2018

Вы можете убить всех детей текущего с помощью:

pkill -P $$

Попробуйте пометить это до конца вашего сценария.

...