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

Я думаю, вы забыли добавить раздел

boot(){
start
}

1
09.05.2015, 01:23
2 ответа

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

Если вы хотите показать сеанс экрана до тех пор, пока он не будет явно отключен, это просто. Выполните команду, которая не завершается после команды 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
'
2
29.04.2021, 00:28

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

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

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

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

1
29.04.2021, 00:28

Теги

Похожие вопросы