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

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

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

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

  • Какое программное обеспечение является блокировкой или lck
  • Как сделать полный набор возможностей для определения «командных символов» на GNU?
  • Почему CentOS 6 настраивает ширину консоли при запуске экрана?
  • console vim в сеансе экрана: переназначить Ctrl-Shift-Left, Ctrl-Shift-Right, чтобы не удалять строки
  • Выполнение команды на удаленном экране
  • Проблемы с обновлением vi внутри экрана
  • Как перейти к началу командной строки, когда я нахожусь внутри экрана?
  • Зачем вам нужен экран / tmux, чтобы поддерживать удаленную программу
  • 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 ' 
    Linux и Unix - лучшая ОС в мире.