URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 64668
[ Назад ]

Исходное сообщение
"Перенаправление (перехват) stdout уже запущенного процесса"

Отправлено scream , 09-Мрт-06 13:15 
Можно ли перенаправить вывод уже запущенного процесса на свою консоль?
Подробнее о проблеме:
коннекчусь на FreeBSD через ssh, запускаю там свою прогу (bittorent-ncurses) и смотрю на его аскетичный, но милый интерфейс. Потом в какой-то момент или перегружаю свой комп, или теряю сеть (ну или еще там что-нить такое). Переконнекчиваюсь. Вижу через ps и на трекере, что bittorent еще работает, причем вполне нормально. Но хочется увидеть его stdout, потеряный в веках при дисконнекте putty.

Содержание

Сообщения в этом обсуждении
"Перенаправление (перехват) stdout уже запущенного процесса"
Отправлено gr , 09-Мрт-06 13:53 
>Можно ли перенаправить вывод уже запущенного процесса на свою консоль?
>Подробнее о проблеме:
>коннекчусь на FreeBSD через ssh, запускаю там свою прогу (bittorent-ncurses) и смотрю
>на его аскетичный, но милый интерфейс. Потом в какой-то момент или
>перегружаю свой комп, или теряю сеть (ну или еще там что-нить
>такое). Переконнекчиваюсь. Вижу через ps и на трекере, что bittorent еще
>работает, причем вполне нормально. Но хочется увидеть его stdout, потеряный в
>веках при дисконнекте putty.


man screen


"Перенаправление (перехват) stdout уже запущенного процесса"
Отправлено scream , 09-Мрт-06 14:19 
>man screen

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

>Можно ли перенаправить вывод уже запущенного процесса на свою консоль?

Здесь я имел ввиду не консоль как таковую, а виртуальную консоль, открытую в окне установленной через Putty сессии.
При запуске ps -aux я вижу следующее:
USER       PID %CPU %MEM   VSZ  RSS  TT  STAT STARTED      TIME COMMAND
root        10 88.6  0.0     0   12  ??  RL   22Feb06 18978:48.06  (idle)
root      1950  4.4  5.3 15268 13632  p0- S     7:22AM  16:26.84 /usr/local/bin/python /usr/local/bin/bittorrent-curses
root      1949  2.2  5.0 14552 12940  p1- S     7:22AM  20:33.52 /usr/local/bin/python /usr/local/bin/bittorrent-curses
......
root     45296  0.0  0.4  1336  916  p0- I     1Mar06   0:00.08 su (bash)
root     53516  0.0  0.4  1336  916  p1- I     2Mar06   0:00.15 su (bash)
......
root      3247  0.0  0.5  1636 1304  p0  I    11:39AM   0:00.02 su
root      3248  0.0  0.4  1332  912  p0  S    11:39AM   0:00.02 su (bash)
root      3669  0.0  0.3  1412  868  p0  R+    1:07PM   0:00.00 ps -uax

Т.е. процессы bittorrent-curses висят на консолях p0- p1-. Вот их то вывод я их хочу посмотреть.


"Перенаправление (перехват) stdout уже запущенного процесса"
Отправлено mezantrop , 09-Мрт-06 14:40 
>>man screen
>
>Прочел. Описание работы виртуальных консолей. Не понял, каким образом исходя из этого
>решить мою проблему. Я, возможно, немного не правильно описал проблему.
>
>>Можно ли перенаправить вывод уже запущенного процесса на свою консоль?
>
>Здесь я имел ввиду не консоль как таковую, а виртуальную консоль, открытую
>в окне установленной через Putty сессии.
>При запуске ps -aux я вижу следующее:
>USER       PID %CPU %MEM  
>VSZ  RSS  TT  STAT STARTED    
>  TIME COMMAND
>root        10 88.6  0.0
>    0   12  ??  
>RL   22Feb06 18978:48.06  (idle)
>root      1950  4.4  5.3 15268
>13632  p0- S     7:22AM  16:26.84
>/usr/local/bin/python /usr/local/bin/bittorrent-curses
>root      1949  2.2  5.0 14552
>12940  p1- S     7:22AM  20:33.52
>/usr/local/bin/python /usr/local/bin/bittorrent-curses
>......
>root     45296  0.0  0.4  1336
> 916  p0- I     1Mar06  
> 0:00.08 su (bash)
>root     53516  0.0  0.4  1336
> 916  p1- I     2Mar06  
> 0:00.15 su (bash)
>......
>root      3247  0.0  0.5  
>1636 1304  p0  I    11:39AM  
> 0:00.02 su
>root      3248  0.0  0.4  
>1332  912  p0  S    11:39AM
>  0:00.02 su (bash)
>root      3669  0.0  0.3  
>1412  868  p0  R+    1:07PM
>  0:00.00 ps -uax
>
>Т.е. процессы bittorrent-curses висят на консолях p0- p1-. Вот их то вывод
>я их хочу посмотреть.

watch


"Перенаправление (перехват) stdout уже запущенного процесса"
Отправлено scream , 09-Мрт-06 17:43 
man ps
......
tt        An abbreviation for the pathname of the controlling terminal, if any.  The abbreviation consists of the three letters following /dev/tty, or, for the console, ``con''.  This is followed by a ``-'' if the process can no longer reach that controlling terminal (i.e., it has been revoked).
.......

Т.е. процессы bittorrent-curses НЕ висят на консолях p0 и p1. Они там раньше были. А куда теперь идет их вывод и как его перехватить? Вот в чем вопрос.


"Перенаправление (перехват) stdout уже запущенного процесса"
Отправлено gr , 09-Мрт-06 23:28 
>man ps
>......
> tt        An abbreviation for
>the pathname of the controlling terminal, if any.  The abbreviation
>consists of the three letters following /dev/tty, or, for the console,
>``con''.  This is followed by a ``-'' if the process
>can no longer reach that controlling terminal (i.e., it has been
>revoked).
>.......
>
>Т.е. процессы bittorrent-curses НЕ висят на консолях p0 и p1. Они там
>раньше были. А куда теперь идет их вывод и как его
>перехватить? Вот в чем вопрос.

ну так я и говорю: заходишь в шелл
запускаешь screen
запускаешь консольное приложение
CTRL-a d
отлогиниваешься

заходишь снова
screen -r -d
получаешь сессию, которая работала пока тебя не было

делаешь так сколько угодно раз.

что касается того, о чем ты говоришь, почитай о понятии "управляющий терминал", о сигнале HUP, о поведении программ (тут имеется в виду правильное поведение) при поступлении сигнала HUP.

curses нужен именно терминал, не просто stdout, а в этом деле поможет screen


"Перенаправление (перехват) stdout уже запущенного процесса"
Отправлено scream , 10-Мрт-06 19:27 
Про screen понял. Но только его нет в моей фряхе. Я так понял, что его там и не должно быть изначально. Попробую поставить. А что касается watch, тут уж простите за глупость, ничего не понял, как он может мне помочь. Насколько мне стало ясно, он может дать мне доступ к вводу-выводы другого терминала. Но ведь того терминала, на котором работал bittorrent уже нет, как же я к нему подключусь?!

"Перенаправление (перехват) stdout уже запущенного процесса"
Отправлено gr , 10-Мрт-06 19:53 
>Про screen понял. Но только его нет в моей фряхе. Я так
>понял, что его там и не должно быть изначально. Попробую поставить.
>А что касается watch, тут уж простите за глупость, ничего не
>понял, как он может мне помочь. Насколько мне стало ясно, он
>может дать мне доступ к вводу-выводы другого терминала. Но ведь того
>терминала, на котором работал bittorrent уже нет, как же я к
>нему подключусь?!


почитай handbook (про порты, ports). хендбук по-моему вообще образец лаконичного и понятного рууководства.

поставить скрин:

whereis screen
cd /usr/ports/sysutils/screen
make install clean

потом /usr/local/bin/screen и тд

это (порты), скажем так (товарищи будут пинать) что-то вроде инсталлятора всего софта, который существует для free.

watch предназначен за слежением за другим активным терминалом, и, имхо, ненужный инструмент (тем более что линухе он совсем другое делает)



"Перенаправление (перехват) stdout уже запущенного процесса"
Отправлено mainak , 17-Ноя-09 12:25 
>watch предназначен за слежением за другим активным терминалом, и, имхо, ненужный инструмент
>(тем более что линухе он совсем другое делает)

watch -W p0(например) дает и смотреть и рулить указанной консолью, так что весьма нужный, тем более удобное в случае если гуляешь через что-то с ограничением на количество сессий, ctrl+x p1 и на другом ауте