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

Управление процессами Linux

Я запустил длительный фоновый процесс (dd с участием /dev/urandom) в моей консоли ssh. Позже пришлось отключиться. Когда я снова вошел в систему (на этот раз напрямую, без ssh), казалось, что процесс все еще запущен.

Я не уверен, что произошло - я не использовал disown. Когда я вошел позже, процесс не был указан в top сначала, но через некоторое время он восстановил высокий процент процессора, как я и ожидал. Так что я предполагаю dd все еще работает.

Теперь я хотел бы увидеть прогресс. я использую kill -USR1 <pid> но ничего не печатается. Есть ли способ снова получить результат?

Перенаправление всех выходных данных (stdout, stdin, stderr) может разъединить дочерний процесс с родительским.

Вы можете попробовать подключиться к процессу с помощью gdb, набрать «c» для продолжения и наблюдать за этой консолью, пока вы подключаете ее к другой.

gdb / bin / dd пид

Благодаря ответ кмарша и этот потоки Мне удалось перенаправить потерянный вывод (stderr) в файл:

gdb /bin/dd 2616

(gdb) p creat("/root/dd.stderr",0600)
[Switching to Thread 0x7f651ece56e0 (LWP 2616)]
$1 = 3
(gdb) p dup2(3,2)
$2 = 2
(gdb) p close(3)
$3 = 0
(gdb) q

После запуска kill -USR1 2616 Я могу катить свой новый файл:

631820341060 bytes (632 GB) copied, 81603.1 s, 7.7 MB/s

Боюсь, что нет. но в следующий раз - используйте экран. Google для руководств или начать Вот.

Вы можете увидеть результат, заглянув в /proc/(pid of your dd/fd/1 или /proc/(pid)/fd/2. Поймайте это, затем ударьте по нему USR1 и посмотрите, что у вас получится.