コマンドがエラーで終了した場合は、画面内で実行されたコマンドの出力を表示します。

コマンドがエラーで終了した場合は、画面内で実行されたコマンドの出力を表示します。

私はscreenこのコマンドを使用してフォアグラウンドで実行されているサーバーを起動しています。ところで、サーバの起動時にエラーが発生した場合、コマンドの出力は表示されません。私はしてはいけませんscreen

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

screenフィルタリングされたコマンドが失敗しても、画面でSTDERR / STDOUT出力を表示したいと思います。これを行う方法はありますか?

ベストアンサー1

サーバーが正常に起動し、エラーメッセージで終了しなかったことをどうやって知ることができますか?

明示的に終了するまでスクリーンセッションを表示したい場合は簡単です。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
'

おすすめ記事