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

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

Спасибо!

3 ответа

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

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

Смотрите man-страницу для деталей.

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

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

Копание должно закончиться, однако что-то может быть сломано в вашей сети.

Другие вопросы по тегам