Как мне «прикрепить» консоль / представление терминала к выходным данным приложения, чтобы я мог видеть, что он может говорить?
Как мне отключиться от вывода приложения, не убивая приложение?
Обычно, если вы запускаете болтливое приложение из командной строки, вы получаете все виды замечательных результатов. Однако предположим, что у меня запущено особенно болтливое программирование, такое как KINO, и я хочу просматривать его вывод в любой момент без перезапуска через командную строку. Я не могу; по крайней мере, я не знаю как.
Ответы:
Здесь есть несколько вариантов. Один из них - перенаправить вывод команды в файл, а затем использовать «хвост» для просмотра новых строк, которые добавляются в этот файл в реальном времени.
Другой вариант - запустить вашу программу внутри «экрана», который представляет собой своего рода текстовое приложение Терминала. Сеансы экрана могут быть присоединены и отсоединены, но номинально предназначены только для использования одним и тем же пользователем, поэтому, если вы хотите поделиться ими между пользователями, это большая головная боль в заднице.
источник
Думаю, у меня есть более простое решение. Просто найдите каталог, имя которого соответствует PID, который вы ищете, в псевдофайловой системе, доступной по
/proc
пути. Итак, если у вас запущена программа с идентификатором 1199,cd
в нее:Затем найдите
fd
каталог подЭтот
fd
каталог содержит объекты файловых дескрипторов, которые использует ваша программа (0: stdin, 1: stdout, 2: stderr), и толькоtail -f
тот, который вам нужен - в данном случае stdout):источник
tail
как в моем случае вывод был перенаправлен на другой процесс для ввода, ноmore
показал мне текущие данные.more
у меня работает. ubuntu 14.04 в процессе узлаЯ искал то же самое и обнаружил, что вы можете:
Это не совсем то, что вам нужно, но довольно близко.
Я попробовал перенаправить вывод, но у меня это не сработало. Может быть, потому что процесс записывал в сокет, я не знаю.
источник
Что касается этого вопроса, я знаю, что можно поймать вывод, даже если вы не запускали команду sceen перед запуском processus.
Хотя я никогда не пробовал, но нашел интересную статью, в которой объясняется, как это сделать с помощью GDB (и без перезапуска процесса).
перенаправление вывода из запущенного процесса
В принципе:
Кстати, если вы используете ОС Linux на i386, в комментариях говорится о лучшем инструменте для перенаправления вывода на новую консоль: «retty» . Если да, рассмотрите возможность его использования.
источник
Для меня это сработало:
Войдите в систему как владелец процесса (даже если вам
root
отказано в разрешении)Следите за дескриптором файла, как упоминалось во многих других ответах.
источник
Я хотел удаленно наблюдать за процессом обновления yum, который выполнялся локально, поэтому, хотя, вероятно, были более эффективные способы сделать это, вот что я сделал:
Очевидно, вы захотите использовать vcsa2, vcsa3 и т. Д., В зависимости от того, какой терминал использовался.
Пока мое окно терминала было той же ширины, что и терминал, на котором выполнялась команда, я мог видеть моментальный снимок их текущего вывода каждые две секунды. Другие команды, рекомендованные в другом месте, не очень хорошо работали в моей ситуации, но эта сработала.
источник