Назад | Перейти на главную страницу

Сервер Ubuntu завершает фоновый процесс при закрытии последнего ssh

У меня есть сервер Ubuntu 14.04, и я пытаюсь запустить Апач Караф из ssh выйдите из ssh и ожидайте, что Karaf продолжит выполнение. На самом деле я обнаружил, что как только последний ssh ​​закрывается / выходит из системы, процесс Karaf завершается.

Я запускаю Karaf с помощью команды bin / start как описано здесь (фоновый режим) и в документации указано, что это должно перевести Karaf в фоновый режим, однако мой опыт показал, что этого не происходит. Как только я выхожу из ssh, процесс умирает.

Я пробовал использовать nohup, но снова процесс karaf всегда завершается после закрытия последнего ssh. Я не верю, что это проблема с Karaf, но с некоторой конфигурацией Ubuntu. Я также наблюдаю такое же поведение в Linux Mint.

Однако Karaf ДЕЙСТВИТЕЛЬНО запускается как фоновый процесс, если я запускаю его на RaspberryPi, на котором запущен Raspbian.

Есть ли конфигурация sshd, которая принудительно завершает все процессы, запущенные в ssh, после завершения ВСЕХ подключений ssh? Что бы я ни пытался, я не могу сохранить фоновый процесс после выхода из системы.

ОБНОВИТЬ Глядя на start сценарий, который он использует exec :

exec "$KARAF_HOME"/bin/karaf server "$@" >> "$KARAF_REDIRECT" 2>&1 &

и таким образом создается другой процесс. Если я просто сделаю bin/start все файловые дескрипторы 0,1 и 2 направлены на / dev / null.

Если я сделаю nohup ./start 0<&- &>/dev/null & за которым следует disown, то fd 0,1,2 результирующего процесса все переходят в /dev/null. Я заметил на RaspberryPi, что fd 0,1 и 2 все /dev/pts/0 (deleted)

Пытаться запустить это внутри экран сеанс и посмотрите, поможет ли это.

Процесс может выполняться под лидером сеанса, в данном случае оболочкой, после выхода из оболочки все процессы под ней будут уничтожены. Вот шаги, которые вам, возможно, потребуется выполнить, чтобы disown процесс -

Первые два шага предназначены только для подтверждения -

  1. Бегать jobs чтобы увидеть процесс. Если он действительно был задуман, его следует указать здесь.
  2. fg выведите его на передний план - вам может потребоваться указать идентификатор задания, если в фоновом режиме несколько заданий.
  3. ctrl+Z - остановить процесс.
  4. bg - фон это
  5. disown -h [id] - заменить id на id задания.

Второй вариант - демонизировать процесс

nohup ./scriptname 0<&- &>/dev/null &