Я использую Ubuntu 12.04, Unity. У меня есть программа, работающая в терминале. Он должен работать около 10 часов. Но оно прекратилось после того, как я вернулся через несколько часов. Использование процессора показывает, что программа не запущена. Затем я проверил распечатку, прокрутив окно терминала. После того, как я переместил полосу прокрутки вверх (как-то окно пустое и в этой точке не видно распечатки) и нажал клавишу возврата, моя программа неожиданно возобновила работу. Итак, как я могу установить параметры, чтобы моя программа не остановилась?

Прокрутка назад установлена на 1024 строки (распечатка из моей программы намного больше).

2 ответа2

1

отправьте ему SIGCONT или SIGALRM, чтобы убедиться, что программа работает в фоновом режиме. Я думаю, что ядро приостанавливает процесс.

$ killall -s SIGCONT PROG_NAME

или же

$ kill -SIGCONT PROG_PID

Также, пожалуйста, проверьте ваш вариант питания и убедитесь, что система не спит.

PS: вы можете создать его как процесс $./PROG & чтобы убедиться, что это не проблема терминала, ИЛИ направить вывод в файл, чтобы сделать буфер счастливым $./PROG > output.txt

0

Из вашего описания я думаю, что, может быть, просто необходим вклад по тем или иным причинам.

Недавно у меня был похожий опыт, когда сценарий завис: оказалось, что вызываемый сценарий выполнял команду mv и ждал подтверждения, если файл, не принадлежащий текущему пользователю, должен быть удален, но я не смог увидеть это сообщение потому что, к сожалению, программист этого сценария решил перенаправить stdout и stderr !

Так что ваша проблема может быть похожа на это.

  1. Вы можете попытаться направить «да» ответы на вашу программу: yes | yourprog

  2. Вы можете попробовать перенаправить стандартный ввод: yourprog </dev/null

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .