Ситуация:
У меня есть файл jar на серверном ПК (ПК выступает в роли сервера), a.jar , который будет выполнять бесконечный цикл для прослушивания TCPIP-соединения с клиентского ПК . Когда соединение установлено, клиентский ПК может отправить файл zip на серверный ПК , a.jar распакует его и выполнит скрипт с этим zip, который запустит другой полноэкранный java-файл, b.jar .
a.jar также будет пытаться запустить b.jar во время загрузки, если b.jar уже существует.
Подход 1:
Я написал скрипт в / etc / init.d / для запуска a.jar , так как это бесконечный цикл, система зависает навсегда во время загрузки ( в терминале экран, даже не могу войти в GUI ). Я должен загрузиться в однопользовательском режиме, чтобы удалить этот скрипт, чтобы нормально загрузиться.
Подход 2:
Когда я изменил скрипт для запуска a.jar в качестве демона, он работает нормально, прослушивает соединение, я могу подключиться к server pc и отправить zip-файл.
Проблема:
- b.jar не выполняется, даже если права на выполнение и все файлы установлены правильно.
- После того, как я отправил zip-файл, выполняется b.jar (, поскольку оно подключено к устройству и это устройство активировано ). Но полноэкранное отображение не отображается, как при запуске через терминал.
Причины этого
Это может показаться немного сложным, но из-за того, что b.jar будет постоянно обновляться и его нужно будет запускать автоматически после обновления, поэтому я использую a.jar для распаковки и выполните новую версию fo b.jar .
И b.jar требуется для запуска от имени пользователя root, так как он необходим для доступа к последовательному порту.
( Серверный компьютер должен быть автоматизирован, поэтому необходимо запускать b.jar во время запуска и дистанционно управлять )
Вопрос
Могу ли я знать, есть ли лучший способ сделать это? Или что я сделал не так? Может кто-нибудь показать мне лучший скрипт для запуска при запуске?