Я пишу сценарий, который запускает множество одновременных процессов, выполняющих команду «копать». Время от времени (относительно редко, но случается при каждом запуске, поскольку я запускал dig много раз) команда dig зависает с 0% ЦП. Поэтому мой сценарий никогда не завершается. Я создал процесс мониторинга для каждой выполняемой мной команды dig, которая через некоторое время завершает его, но мне было интересно, нет ли более простого и эффективного способа запустить процесс с заранее определенной «датой истечения срока», т.е. если процесс выполняется более X секунд, он получает сигнал, который завершает его.
Спасибо!
Вы можете использовать тайм-аут команда:
тайм-аут 30 с my_command my_args
См. Подробности на странице руководства.
вы также можете попробовать варианты тайм-аута dig
имеет, например +time=T
, + пытается = Tetc. see the
dig` страницу руководства для получения дополнительной информации
Вопрос в том, почему ваш процесс раскопок висит на первом месте. Попробуйте запустить его под некоторыми инструментами отладки, такими как ltrace и strace, или даже под ddd и посмотрите Зачем это висит. Если вы обнаружите что-то необычное, опубликуйте это как ошибку, это единственный способ улучшить программное обеспечение с открытым исходным кодом.
Время ожидания Dig должно истечь, однако что-то может сломаться в вашей сети.