У меня есть приложение Sinatra, которое я запускаю на своем локальном компьютере, используя ruby app.rb
. При развертывании его на удаленном компьютере через ssh, как мне запустить его в фоновом режиме и перенаправить stdout и stderr в файл журнала?
При перезапуске я хочу сохранить предыдущие журналы, чтобы новые сообщения добавлялись в существующий файл журнала, а не усекали его.
Какой рекомендуемый способ запуска моего веб-приложения в качестве демона?
я пробовал nohup ruby app.rb &
, но похоже, что в нем отсутствует stderr, а в некоторых случаях операторы журнала выглядят не по порядку.
Под bash попробуйте:
nohup ruby app.rb >> /log/file 2>&1 &
screen -L -dmS somename ruby app.rb
Это запустит экранный процесс с именем somename, при этом весь вывод программы будет записан в screenlog.0 в текущем рабочем каталоге.
Если вы когда-нибудь захотите вернуть консоль приложения по какой-либо причине, вы можете сделать screen -r somename
.