Как получить выход из удаленной оболочки

У меня есть приложение, запущенное на сервере, запущенное из командной строки. Время от времени мне нужно подключиться к серверу через SSH и получать выходные сообщения, записанные в stdout из приложения. Есть ли способ читать / обнюхивать / улавливать сообщения на этом терминале? На сервере работает Fedora 12.

Прояснить немного больше. У меня есть доступ администратора к серверу, но я не могу остановить запущенное приложение, потому что оно находится в критическом окружении. Конечный пользователь запускает приложение с терминала. Через ssh я должен читать сообщения в терминале всякий раз, когда пользователь видит странное поведение. Это графическое приложение. Я могу создать сценарий для запуска приложения с экраном, это означает, что мне нужно изменить «пусковую установку», но некоторые серверы не всегда доступны по соображениям безопасности из-за пределов локальной сети. Обновление осложняется. Мой вопрос в том, что если есть приложение, есть ли способ уловить его вывод в терминале, не останавливая его и повторно запускать под экраном или что-то еще?

3 Solutions collect form web for “Как получить выход из удаленной оболочки”

Очевидным решением было бы перенаправить вывод приложения в файл и посмотреть на этот файл:

 nohup application >app.log & # on the server ssh server tail -n +1 -f app.log # on the client 

Если приложение должно иметь свой вывод в терминале, запустите его на экране .

На сервере:
screen -S somename -Rrd
application
нажмите Ctrl + A D, чтобы «отсоединиться» от сеанса экрана, оставив его в фоновом режиме

От клиента:
ssh server
screen -S somename -Rrd для повторного подключения к сеансу экрана

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

Я думаю, что в этом случае лучше, чем перенаправление вывода в файл, перенаправляет его на именованный канал (fifo) , потому что нет необходимости хранить все данные на диске. Если программа производит много выходных данных, у нас может закончиться дисковое пространство.

Вместо обычного, неназванного конвейера оболочки, именованный конвейер использует файловую систему. Он явно создается с помощью mkfifo () или mknod (), и два отдельных процесса могут обращаться к каналу по имени – один процесс может открыть его как читателя, а другой как писатель.

 mkfifo /path/to/my/pipe someprogram > /path/to/my/pipe tail -f /path/to/my/pipe 

Если вы хотите вывести его также в stdout, вы можете использовать tee :

 someprogram | tee /path/to/my/pipe 

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

  • Как подключиться через LAN-провод и WIFI-маршрутизатор к Интернету (только терминал)
  • Что происходит при нажатии Ctrl + Alt + F <Num>?
  • Горячие клавиши Ch, Cm в bash
  • При использовании шпатлевки alt-left / right отличается, когда byobu запускается автоматически из профиля
  • Ncurses over ssh - будут ли они отображаться?
  • Как я могу получить цвета для отображения в терминале (macOS Sierra)
  • Перезапуск X в CentOS 5
  • Солнечная система цветов в fbterm?
  • Получить имя файла после find -name | xargs
  • PROMPT_DIRTRIM не работает
  • Терминатор не работает!
  • Linux и Unix - лучшая ОС в мире.