Выполнить команду, когда скрипт bash не отвечает?

Вот моя ситуация: я сделал скрипт в цикле while, но иногда (скажем, после 20-30 циклов) он неожиданно останавливается. Я пытался его отладить, но не смог.

Я заметил, что он останавливается во время выполнения команды, и просто ничего не делает, когда останавливается. Теперь я подумал: есть ли способ сообщить другому скрипту, когда первый скрипт останавливается и не выполняет ни одной команды, скажем, 120 секунд? Может быть, постоянно наблюдая за выводом первого сценария, и когда он не дает вывода, второй сценарий убивает первый и заставляет его запускаться снова? Извините за мой плохой английский, надеюсь, я ясно выразился.


person D. Appresti    schedule 02.11.2017    source источник
comment
Взгляните на stackoverflow.com/questions/16828035/, чтобы узнать, запущен ли процесс.   -  person mattias    schedule 02.11.2017
comment
Дублирование ввода-вывода ближе, поскольку вы ищете тайм-аут, который будет иметь место только без вывода. Кстати, в общем, то, что вы ищете, называется функцией сторожевого таймера - когда программа перезапускается через определенное время, и никто не гладит сторожевой таймер (сбрасывает таймер). Если ваша программа является демоном, ваша система наблюдения за процессами может иметь собственную поддержку сторожевого таймера, например systemd.   -  person Charles Duffy    schedule 02.11.2017
comment
Я знаю, что такое таймаут (использую его в глючном скрипте), но не хочу кидать все в другой скрипт с таймаутом, потому что это цикл и теоретически он может длиться вечно, а во-вторых, я использую счетчик и Я не могу заставить счетчики переходить от одного скрипта к другому... Нет ли другого пути?   -  person D. Appresti    schedule 02.11.2017
comment
Хорошо, я попробую использовать сторожевой таймер и дам вам знать... если это не сработает, я заменю все счетчики файлами флагов и посчитаю их в сценарии, который вызывает другой сценарий, используя функцию тайм-аута. Какой ум... Спасибо, Чарльз в любом случае   -  person D. Appresti    schedule 02.11.2017