У меня есть три init сценария, и Брокер init сценарий хорошо работает, но когда я пытаюсь выполнить Потребителя init сценарий и затем Программа сбора данных init сценарий, единственный процесс, который работает, является Брокером.
Я добавил символьные ссылки к уровням выполнения с помощью обновления-rc.d для каждого сценария, и я также изменил префиксы числа в символьных ссылках, чтобы попытаться запустить скрипты в надлежащем порядке, но это не работало.
Я могу запустить скрипты от терминала, и они хорошо работают, но они должны все быть запущены на начальной загрузке.
Какие-либо идеи относительно того, почему мои другие сценарии не работают?
Также в моем Потребителе и Программе сбора данных я работаю:
su user1 -c 'java -jar foo.jar'
запустить сервисы.
Также Потребительский класс Java сидит и ждет сообщения от очереди, таким образом, код Java не останавливается, пока я не указываю аргумент остановки в пользу init сценария. Брокер должен запустить сначала, затем Потребитель, затем Программа сбора данных.
Добавление символьных ссылок для runlevels:
sudo update-rc.d Broker defaults 10 90
sudo update-rc.d Consumer defaults 15 85
sudo update-rc.d DataCollector defaults 20 80
Я получил его на работу. Я сделал Broker фоновым процессом, потому что он постоянно работает, пока я не выключу компьютер или не вызову скрипт с параметром shutdown. Я также сделал Потребителя фоновым процессом.
Скрипт инициализации брокера
su user1 -c 'qpid-server &'
Скрипт инициации клиента
su user1 -c 'java -jar foo.jar &'
Похоже, команда java никогда не завершается, и, следовательно, остальные сценарии инициализации не запускаются. Попробуйте что-то вроде:
nohup su user1 -c 'java -jar foo.jar' &
, и я думаю, вы обнаружите, что остальная часть последовательности запуска init будет работать.