Отвязать приложение от консоли

Рейтинг: 1Ответов: 1Опубликовано: 03.11.2014

Арендован VPS, на нём запускаю консольный java-сервер. Сейчас сервер работает, только когда открыта консоль, и я управляю им, вводя команды. И он работает, только когда я подключён по ssh к VPS. Если я отключаюсь - ничего не работает.
Соответственно, нужно отвязать запущенный сервер от терминала (гугл говорит, disown или nohup) и сделать его независимым от консоли. Только как им тогда управлять?

Ответы

▲ 2Принят

Только как им тогда управлять?

Если приложение не умеет без терминала работать, то самый простой способ, который не требует постоянного ssh подключения, это запустить screen (или tmux -- в Ubuntu есть byobu, который позволяет переключаться между первым или вторым вариантами).

В долгосрочной перспективе нужно превратить java-сервер в Unix-демон и запускать/останавливать/перезапускать стандартными средствами (например, upstart на некоторых версиях Ubuntu). Для общения с демоном можно сокеты использовать, если специальных нужд нет.

Если приложение ожидает команды по какому-то своему частному протоколу из стандартного ввода (stdin) и выводит ответ в stdout, то чтобы превратить его в демон, можно написать обёртку, которая использует какой-нибудь стандартный протокол, например, http, и перенаправляет команды через pipe в запущенный процесс (дитё).
Такую обёртку уже можно демонизировать простыми средствами, например, daemonize команда. Или специфичное для java решение: Apache Commons Daemon.