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

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

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

3 ответов


вы можете попробовать это:

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

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

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


если вы используете Ubuntu и имеете "выскочку" (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

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:

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

$ 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