Назад | Перейти на главную страницу

Мониторинг и завершение зависшего процесса в Linux

Я пишу сценарий, который запускает множество одновременных процессов, выполняющих команду «копать». Время от времени (относительно редко, но случается при каждом запуске, поскольку я запускал dig много раз) команда dig зависает с 0% ЦП. Поэтому мой сценарий никогда не завершается. Я создал процесс мониторинга для каждой выполняемой мной команды dig, которая через некоторое время завершает его, но мне было интересно, нет ли более простого и эффективного способа запустить процесс с заранее определенной «датой истечения срока», т.е. если процесс выполняется более X секунд, он получает сигнал, который завершает его.

Спасибо!

Вы можете использовать тайм-аут команда:

тайм-аут 30 с my_command my_args

См. Подробности на странице руководства.

вы также можете попробовать варианты тайм-аута dig имеет, например +time=T , + пытается = Tetc. see thedig` страницу руководства для получения дополнительной информации

Вопрос в том, почему ваш процесс раскопок висит на первом месте. Попробуйте запустить его под некоторыми инструментами отладки, такими как ltrace и strace, или даже под ddd и посмотрите Зачем это висит. Если вы обнаружите что-то необычное, опубликуйте это как ошибку, это единственный способ улучшить программное обеспечение с открытым исходным кодом.

Время ожидания Dig должно истечь, однако что-то может сломаться в вашей сети.