Запустите 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