저는 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
'
답변2
예. 시작하고 중지할 때 화면 표시를 재설정하고 screen
그 과정에서 화면을 지웁니다. 명령에 의해 생성된 오류를 확인할 수 있는 ruby
가장 쉬운 방법은 screen
한 명령이 더 이상 다른 명령에 종속되지 않도록 해당 오류를 명령과 분리하는 것입니다.
screen -S server
ruby start.rb true 3001
...
exit
Ctrl Ad이렇게 하면 화면이 분리되고 나중에 를 사용하여 이 명명된 세션을 다시 연결할 수 있다는 것을 이미 알고 있을 수 있습니다 screen -r server
.
이 명령으로 생성될 수 있는 오류는 ruby
계속해서 살펴볼 수 있습니다. 명령이 종료되더라도 세션은 계속 실행되므로 완료되면 screen
항상 exit
다시 연결하는 것을 잊지 마십시오.