Я думаю, вы забыли добавить раздел
boot(){
start
}
Как вы узнаете, что сервер успешно запущен и не собирается умереть с сообщением об ошибке?
Если вы хотите показать сеанс экрана до тех пор, пока он не будет явно отключен, это просто. Выполните команду, которая не завершается после команды 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
'
Ах да. Когда вы запускаете и останавливаете экран
, он сбрасывает отображение экрана, очищая его в процессе. Самый простой способ убедиться, что вы видите ошибки, сгенерированные вашей командой ruby
, - это отделить их от команды screen
, чтобы одна больше не зависела от другой:
screen -S server
ruby start.rb true 3001
...
exit
Вы, вероятно, уже знаете, что Ctrl A d отключает экран, а позже вы можете повторно подключить этот именованный сеанс с помощью screen -r server
.
Ошибки, которые могут быть сгенерированы командой ruby
, останутся доступными для изучения. Даже если команда завершит работу screen, сеанс
останется запущенным, поэтому важно не забыть повторно подключиться и выйти
, когда вы закончите.