私は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
'