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

У меня есть приложение, запущенное на сервере, запущенное из командной строки. Время от времени мне нужно подключиться к серверу через 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 

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

  • PROMPT_DIRTRIM не работает
  • Деактивировать символ DCS contol
  • вызов javac из CentOS 7
  • Разница между командами в сценарии bash и командами в терминале
  • Включение htop в виджет
  • Как правильно запустить команду «сверху» через SSH?
  • Как создать кросс-платформенные команды привязки клавиатуры?
  • "-bash: warning: setlocale: LC_ALL: не может изменить локаль (en_US.UTF-8)"
  • Найти файлы дубликатов файлов и заглавные буквы rm
  • Nautilus: открыть папку в терминале при использовании tmux
  • Получить список всех файлов по маске в терминале
  • Как скрипт Bash может сказать, как он был запущен?
  • Linux и Unix - лучшая ОС в мире.