Как проверить бесконечный цикл в Bash? - PullRequest
0 голосов
/ 09 мая 2019

Я несколько раз пытался запустить исполняемый файл, используя bash.Существует вероятность того, что этот исполняемый файл попадет в бесконечный цикл или в сегфоулты.Я знаю, что в bash нет try-catch, но мы можем обойти это, используя:

{ #try
    "myCommand" && "do what i want"
} || { #except
    "handle error"
}

Но это не способно понять бесконечный цикл.Как я могу справиться с этой проблемой?

Ответы [ 2 ]

2 голосов
/ 09 мая 2019

Вы можете использовать timeout из gnu coreutils.

Вот пример для тайм-аута в 10 секунд

timeout 10s yourscript.sh
0 голосов
/ 09 мая 2019

Bash не может сказать вам, что происходит внутри myCommand, если только этот цикл не отправляет сигнал или не изменяет систему / среду.Вы можете запустить #try в фоновом режиме &, а затем сделать что-то, если он все еще работает через определенное время.$! относится к последней фоновой задаче.

Извлечение Управление заданиями в Bash.

myCommand && doWhatIWant &
sleep 10
ps $! &>/dev/null && kill $!
...