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



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



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

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 чтобы убедиться, что он работает.

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

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:

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

$ 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

Comments

    Ничего не найдено.