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