LINUX.ORG.RU

Как запустить несколько jar приложений в автозапуске?

 , , ,


1

1

Здравствуйте. Есть VPN сервер на CentOS. Для функционала сайта необходимо, что бы при запуске сервера стартовали 2 jar приложения. Нашёл совет писать код в /etc/rc.local Сейчас там следующий код:

#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local
ping -c 2 8.8.8.8

service httpd start
service mysqld start
java -jar "/home/apps/app1.jar"
java -jar "/home/apps/app2.jar"

Стартует только первое приложение. Если поменять местами строчки, то стартует только второе.

#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local
ping -c 2 8.8.8.8

service httpd start
service mysqld start
java -jar "/home/apps/app2.jar"
java -jar "/home/apps/app1.jar"

Если закомментировать первую строчку, то стартует второе приложение.

#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local
ping -c 2 8.8.8.8

service httpd start
service mysqld start
#java -jar "/home/apps/app1.jar"
java -jar "/home/apps/app2.jar"

То есть, как я вижу проблема в том, что запустить список jar приложений посредством файла rc.local - невозможно. После запуска первого приложения код застопыривается и дальше не выполняется. Есть ли какое решение? Пожалуйста, помогите советом.

Забудь про rc.local и делай правильный инит-скрипт. Только сначала прочитай что это такое.

И вещей наподобие service http start там никак не должно быть.

alpha ★★★★★
()
java -jar "/home/apps/app2.jar" &
java -jar "/home/apps/app1.jar" &
Ceiling_QB ★★★★
()

Твоё приложение, очевидно, не просто выполняет какое-то действие и схлопывается, а висит в своем цикле и работает. Запуск второго в таком случае не произойдет, пока не завершится работа первого. Тебе просто нужно запускать их в бэкграунде.

Use &, Luke!

bytecode ★★
()
Ответ на: комментарий от Azag-Thoth

Прочитать что такое инит-скрипт и как делается зависимость между запуском сервиса java-приложения и сервиса httpd (если они зависимы).

alpha ★★★★★
()
Ответ на: комментарий от Azag-Thoth

У тебя центос какой, шестой?

Посмотри примеры известных java-приложений, типа того же jenkins и как они запускаются. Тебе надо сделать практически то же самое, только с другим jar-файлом.

alpha ★★★★★
()
Ответ на: комментарий от alpha

Большое спасибо за помощь, сейчас всё почитаю.

-bash-4.1# rpm -q centos-release
centos-release-6-5.el6.centos.11.2.x86_64

Azag-Thoth
() автор топика
Ответ на: комментарий от f1xmAn

Не знаю. Такое содержание были изкаробки.

#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local
ping -c 2 8.8.8.8

На всякий случай менять ничего не стал.

Azag-Thoth
() автор топика
Ответ на: комментарий от alpha

А я - не первый :(

У меня зазвонил телефон.
- Кто говорит?
- Дагон.
- Откуда?
- Со дна пруда.
- Что вам надо?
- Изображений подводного ада.
- Для кого?
- Для культа моего.
- А много ли прислать?
- Да алтарных камней штук пять,
На больше нам жертв не набрать,
Культ у меня еще маленький.

А потом позвонили Ми-Го:
- Не хотите отдать нам мозгов?
Мы бы в баночку их положили
И по космосу всласть покружили.
- Нет-нет, это тело мне не надоело,
Обратитесь-ка к мистеру Экли.

А потом позвонил Йог-Сотот:
- Пришлите мне ключ от Ворот!

А потом позвонили культисты:
- Пришлите нам тварей нечистых!

А потом позвонил Альхазред,
Да как начал нести всякий бред.
- Погодите, Абдул, не вопите,
Объясните, чего вы хотите?
Но он только "ЙА!" да "ЙА!",
А к чему - не поймешь ни чуть-чуть.
- Изложите, пожалуйста, письменно!

А потом позвонили козлята:
- Позовите Шаб-Ниггурата!
Тут я разозлился и крикнул скотам:
- Пх’нглуи мглв’нафх Ктулху Р’льех вгах’нагл фхтагн!
- Ой, а где же Шаб-Ниггурат?
- Не знаю, звоните сто два - пятьдесят!

Я полгода не спал, я устал,
Мне бы заснуть, отдохнуть,
Но только я чуть вздремнул,
Опять позвонил Абдул:
- Древний Ужас! Все прах и тлен!
Спешите скорее на Ленг!
- В чем дело?
- Впустите!
- Кого?
- Азатота!
Чтоб он этот мир уничтожил в два счета!
- Уничтожил в два счета?
- Да! Пока не зашла звезда!
- Ладно, бегу, бегу,
Если смогу - помогу!
Ох, нелегкая это работа -
В этот мир выпускать Азатота!
stevejobs ★★★★☆
()

#!/bin/sh
java -jar «/home/apps/app2.jar» &
java -jar «/home/apps/app1.jar» &

ymuv ★★★★
()
Последнее исправление: ymuv (всего исправлений: 1)

В Centos 6 сервисы включаются командой

chkconfig service_name on
ping в rc.local это вообще непонятно зачем. Убирай, так как от результатов выполнения команды в скрипте ничего не зависит. Единственное, для чего это может использоваться - это такой супер-черезжопный способ сделать sleep 1 (пауза 1 секунда).
В shell-скриптах в *nix (в отличии от win) последующая команда выполняется всегда после завершения предыдущей, что позволяет избежать многих проблем. Если нужно параллельно с выполнением команды продолжить выполнение скрипта, эта команда должна заканчиваться символом "&".

А использование rc.local - это вообще моветон. Забудь об этом файле, и пиши init-скрипты.

Black_Shadow ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.