Запустите файл 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чтобы убедиться, что он работает.если вы просто хотите запустить свой 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