LINUX.ORG.RU

dd & kill -USR1


1

1

запущен LiveCD Ubuntu 11.04. Через ssh запустил клонирование дисков несколькими командами:

dd if=... of=... &

Диски большие и их много, поэтому и времени это занимает много. Состояние копирования проверял командой

kill -USR1 [pid процесса]

но после многих моих подключений-отключений команда kill перестала выдавать ответ. Еще нюанс - если раньше я просто набирал ps, и выводились все запущенные мной процессы dd, то теперь, чтобы их увидеть приходится делать так:

ps -A | grep dd

вывод комманды такой:

# ps -A | grep dd
2 ? 00:00:00 kthreadd
7417 ? 15:02:34 dd
7418 ? 15:02:29 dd
............................
22131 ? 13:09:41 dd

смущает знак вопроса. Я подозреваю, связано что-то с сесией, из которой я запускал процессы, и которую я прервал. Как мне вернуть вывод команды kill -USR1? Помогите, пожалуйста, новичку


Надо было использовать screen.

Что делать сейчас, к сожалению, не знаю. Может быть, попробовать retty?

AITap ★★★★★ ()
Ответ на: комментарий от AITap

интересная утилита retty, но, к сожалению, у меня сейчас запущен 64-битный LiveCD, а утилита только под i386. Не помогает даже

dpkg -i --force-all retty_1.0-2_i386.deb

:(

sgasv ()

google - наше все!

итак, прочитав описание утилиты retty начал гуглить по фразе:

«linux attach process running on another terminal»

по второй ссылке из гугла

http://stackoverflow.com/questions/715751/attach-to-a-processes-output-for-vi...

нашел замечательную заметку

http://etbe.coker.com.au/2008/02/27/redirecting-output-from-a-running-process/

итак, какими были мои действия:

(получаем PID нужного нам процесса)

#ps -A | grep dd
7417 ? 17:33:21 dd
......................
......................
22131 ? 15:38:44 dd

#ls -l /proc/22131/fd
total 0
lr-x------ 1 root root 64 2011-08-02 08:32 0 -> .....ололо.....
l-wx------ 1 root root 64 2011-08-02 08:32 1 -> .....ололо.....
lrwx------ 1 root root 64 2011-08-02 08:32 2 -> /dev/pts/0 (deleted)

(смотрим, какие консоли у нас сейчас активны)

#ls -l /dev/pts/
total 0
crw--w---- 1 ubuntu tty 136, 1 2011-08-02 08:46 1
c--------- 1 root root 5, 2 2011-07-29 22:43 ptmx

(атачимся к процессу с PID 22131)

#gdb -p 22131 /dev/pts/1

.....трололо.....
.....трололо.....

вбиваем:
p close(2) (потому что ls -l /proc/22131/fd выдал /dev/pts/0 под номером 2)
p creat(«/dev/pts/1″, 0600)
q
y

# ls -l /proc/22131/fd
total 0
lr-x------ 1 root root 64 2011-08-02 08:32 0 -> .....ололо.....
l-wx------ 1 root root 64 2011-08-02 08:32 1 -> .....ололо.....
lrwx------ 1 root root 64 2011-08-02 08:32 2 -> /dev/pts/1

(ура!! проверяем опять вывод ps -A | grep dd)

#ps -A | grep dd
7417 ? 17:35:33 dd
......................
......................
22131 ? 15:40:56 dd

(и, наконец заветный kill -USR1)

#kill -USR1 22131
25734+0 records in
25733+0 records out
......ололо........

sgasv ()
Ответ на: комментарий от sgasv

> screen, если я правильно понял, тоже не подходит, т.к. сессии время от времени нужно прерывать
Совсем прерывать? Никто же не мешает сделать detach, отключиться, потом снова подключиться и reattach'нуться к работавшей всё это время (естественно, если машину не перезагрузили) сессии.

AITap ★★★★★ ()
Ответ на: комментарий от AITap

ага, теперь понятно. Я просто еще не щупал этот screen

sgasv ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.