Показывать вывод команды, запускаемой внутри экрана, если она выходит с ошибками

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

 foo@ubuntu:~/server/application$ screen -S server ruby start.rb true 3001 [screen is terminating] foo@ubuntu:~/server/application$ 

Я хотел бы видеть вывод STDERR / STDOUT на экране, даже если при использовании screen даже если экранированная команда не работает. Есть какой-либо способ сделать это?

2 Solutions collect form web for “Показывать вывод команды, запускаемой внутри экрана, если она выходит с ошибками”

О да. Когда вы начинаете и останавливаете screen он сбрасывает экран, очищая его в процессе. Самый простой способ убедиться, что вы видите ошибки, генерируемые вашей ruby командой, – это отделить ее от команды screen , чтобы она больше не зависела от другой:

 screen -S server ruby start.rb true 3001 ... exit 

Вы, вероятно, уже знаете, что Ctrl A d отсоединит экран, а затем вы можете повторно подключить этот именованный сеанс с помощью screen -r server .

Ошибки, которые могут быть сгенерированы командой ruby , останутся доступными для прочтения. Даже если команда завершает сеанс screen будет работать, поэтому важно помнить о том, чтобы снова и снова завершить работу, когда вы закончите.

Как вы узнаете, что сервер успешно запущен и не собирается умирать с сообщением об ошибке?

Если вы хотите показать сеанс экрана, пока его явно не убили, это легко. Запустите команду, которая не завершается после команды ruby , например, для запуска оболочки:

 screen -S server sh -c 'ruby start.rb true 3001; echo "Server terminated with status $?"; exec bash' 

или выйти после таймаута

 screen -S server sh -c 'ruby start.rb true 3001; echo "Server terminated with status $?"; sleep 3600' 

Если вы хотите отключиться после таймаута, даже если сервер продолжает работать:

 screen -S server sh -c ' ruby start.rb true 3001 & server_pid=$! sleep 2 if [ -z "$(ps -o pid= -p "$server_pid")" ]; then wait echo "Server terminated with status $?" exec bash fi ' 
  • Может ли прокрутка колесика мыши работать в сеансе экрана?
  • Сделать запуск экрана как Daemon для сервера Minecraft
  • Можно ли отсоединить процесс, запущенный с одного сеанса ssh, используя другой сеанс ssh?
  • Как я могу передать экранный звуковой звонок в фоновом окне?
  • В меню конфигурации byobu отсутствуют параметры
  • Удаленный рабочий стол, такой как screen / tmux (из окон)
  • Что такое «Многоэкранный режим» экрана?
  • запускать экран после «su'ing для конкретного пользователя
  • поиск текста на выходе терминала
  • Экран: текущий каталог в заголовке (не как заголовок)
  • bash - наследование стека каталогов у детей
  • Создание экрана не работает на crontab
  • Interesting Posts

    Почему я получаю ошибку несоответствия хэш-суммы при попытке установить моно на debian

    Перекрестно скомпилируете зависимости пакета или просто выполните установку?

    Почему комментирование этой строки в сценарии оболочки (с использованием pdftk) вызывает проблемы?

    Linux: как настроить TSO и GSO из окна proc / sysctl

    В bash, как вызвать переменную и обернуть кавычки вокруг ее значения как часть команды, не заставляя имя переменной стать строковым литералом?

    Есть ли способ конвертировать избранное IE в формат bookmark.htm Firefox?

    файл списка файлов для пакета 'gucharmap' отсутствует окончательная новая строка

    Поведение подстановки команды bash с помощью команды из строки в переменной

    Сделайте Xmonad более стандартным способом смены уровней сдвига

    Как конвертировать PDF-файл в DVD-фильм?

    Как получить последний день предыдущего месяца в UNIX (HPUX)

    Что означает <несуществующий> в выводе ps?

    См. Информацию о потреблении диска, используя команду «df» в AIX

    Отображать conky всегда только на экране LVDS

    Восстановление ядра Linux без «чистого»

    Linux и Unix - лучшая ОС в мире.