Подтвердить что ты не робот

Запустить java файл jar на сервере в качестве фонового процесса

Мне нужно запустить java-банку на сервере, чтобы общаться между двумя приложениями. Я написал два сценария оболочки, чтобы запустить его, но как только я запускаю этот script, я не могу завершить/завершить процесс. Если я нажму ctrl + C или закрою консоль, сервер отключится. Может ли кто-нибудь помочь мне изменить этот script для запуска как обычный сервер?

 #!/bin/sh
java -jar /web/server.jar
echo $! 
#> startupApp.pid
4b9b3361

Ответ 1

Вы можете попробовать следующее:

#!/bin/sh
nohup java -jar /web/server.jar &

Символ и, переключает программу для запуска в фоновом режиме.

Утилита nohup делает команду переданной как аргумент, выполняемый в фоновом режиме даже после выхода из системы.

Ответ 2

Если вы используете Ubuntu и имеете "Upstart" (http://upstart.ubuntu.com/).вы можете попробовать следующее:

Создать /var/init/yourservice.conf

со следующим содержанием

description "Your Java Service"  
author "You"  

start on runlevel [3]  
stop on shutdown  

expect fork  

script     
    cd /web 
    java -jar server.jar >/var/log/yourservice.log 2>&1  
    emit yourservice_running  
end script  

Теперь вы можете выдать команды service yourservice start и service yourservice stop. Вы можете закрепить /var/log/yourservice.log, чтобы убедиться, что он работает.

Если вы просто хотите запустить свою банку с консоли, не запуская консольное окно, вы можете просто сделать:

java -jar /web/server.jar > /var/log/yourservice.log 2>&1

Ответ 3

Systemd, который теперь выполняется в большинстве дистрибутивов

Шаг 1:

Найдите свои сервисы, определенные пользователем, мой был в /usr/lib/systemd/system/

Шаг 2:

Создайте текстовый файл с именем вашего любимого текстового редактора whatever_you_want.service

Шаг 3:

Поставить следующий Шаблон в файл whatever_you_want.service

[Unit]
Description=webserver Daemon

[Service]
ExecStart=/usr/bin/java -jar /web/server.jar
User=user

[Install]
WantedBy=multi-user.target

Шаг 4:

Запустите службу
как суперпользователь

$ systemctl start whatever_you_want.service # starts the service
$ systemctl enable whatever_you_want.service # auto starts the service
$ systemctl disable whatever_you_want.service # stops autostart
$ systemctl stop whatever_you_want.service # stops the service
$ systemctl restart whatever_you_want.service # restarts the service