@maxemga

Почему перестает работать приложение на VPS после закрытия SSH?

Поставил свой проект на VPS через PowerShell SSH, сбилдил его, запустил и все работает. Но когда закрываю PowerShell, то есть разрываю соединение с SSH, то приложение перестает работать.
Объясните, почему так и как это исправить?
  • Вопрос задан
  • 878 просмотров
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Я исхожу из того, что VPS под линуксом.
Потому что когда ты закрываешь соединение, SSH-демон завершает процесс оболочки, который он запустил для его обслуживания (скорее всего это bash), посылая ему сигнал HUP. А твой сервис запущен как дочерний процесс из этой оболочки, и потому тоже получает сигнал HUP. Так как он этот сигнал не обрабатывает, он завершается.

Если тебе нужно запустить процесс сервиса разово, и больше его не трогать, запускай его такой командой:
nohup /путь/до/сервиса --параметры --сервиса &
& позволит оболочке продолжить работу (запустит твою программу "в фоне"), а nohup "проглотит" сигнал HUP и тем самым не даст завершиться твоему сервису, когда ты отключишь сессию SSH. Но если сервис "упадёт", то запускать его придётся снова.

Если для тебя допустимо запускать сервис вручную, и тебе нужно взаимодействие с сервисом через консоль (ну скажем, прочитать что он туда пишет), используй программу screen (может потребоваться её установить). Что это за программа, погугли сам, но вкратце, она позволяет создать сессию оболочки, которая переживёт отключение. Однако опять же, если сервис упал, screen его обратно не поднимет.

Предыдущие варианты сойдут для отладки. А если на постоянку, то тебе нужно запускать сервис как демон, при старте VPS (ну мало ли хостер её перезагрузит), так что разбирайся с автозагрузкой. В зависимости от установленного на VPS дистрибутива это может быть скрипт init.d (смотри скрипты в каталоге /etc/init.d), модуль systemd или что-то ещё. Разбирайся, гугли, по этому материалов в сети полно.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@HighMan
Доброго времени.
А ваш проект работает как демон, или простое приложение?
Если простое приложение, то оно будет закрываться вместе с сессией ssh.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы