Как правильно запустить пакетное приложение Java (приложение .jar) в фоновом режиме на компьютере Linux?

Как правильно запустить пакетное приложение Java (приложение .jar) в фоновом режиме на компьютере Linux?

Я не системный инженер (я программист-разработчик). Мне нужно запустить Java-приложение (исполняемое.банкаfile) на машине Linux (Centos 7). Я подключаюсь к оболочке через SSH. Это приложение находится вбанкаформатирует и реализует пакетное приложение и содержит в себе его планировщик.

Мне приходится запускать его в фоновом режиме на удаленном сервере, чтобы после выхода из оболочки он все еще работал.

Я выполнил эту команду, чтобы запустить свое приложение в фоновом режиме:

java -Xms256m -Xmx1024m -jar UpdateInfoBatch-0.0.1-SNAPSHOT.jar &

затем я нажал наCTRL+Cна клавиатуре, чтобы снова получить подсказку клавиатуры на моей оболочке.

и вот первое странное поведение: я снова получаю приглашение оболочки и возможность вставить команду, но если приложение что-то регистрирует, оно появляется в оболочке. Почему? Я ожидал, что мое приложение все еще будет работать в фоновом режиме.

В любом случае, теперь я запрашиваю эту команду в своей оболочке, чтобы проверить, запущено ли мое приложение:

[email protected] [~/zzz-import-data-batch]# ps aux | grep java
xxx 23307 15.3  1.6 4871172 418980 pts/0  Sl   10:23   0:22 java -Xms256m -Xmx1024m -jar UpdateInfoBatch-0.0.1-SNAPSHOT.jar
webadmin 23522  0.0  0.0 112812   980 pts/0    S+   10:25   0:00 grep --color=auto java

И да, мое приложение, похоже, работает правильно (первое).

Затем я закрываю соединение с моей оболочкой, снова вхожу в нее и снова выполняю предыдущую команду, но теперь получаю следующее:

[email protected] [~/zzz-import-data-batch]# ps aux | grep java
xxx 23919  0.0  0.0 112812   980 pts/0    S+   10:27   0:00 grep --color=auto java

Как вы видите, после этого я отключаюсь от оболочки, и когда я делаю новый вход в систему, мое пакетное приложение, похоже, не запущено (и на самом деле мое приложение для работы не запущено).

Что не так? Что я упускаю? Какой может быть хороший способ запустить в фоновом режиме мое пакетное приложение java jar?

решение1

Перед завершением работы оболочки необходимо отключить фоновое задание от оболочки.

Когда вы ввели command &, система выдала вам идентификатор задания, который выглядит как «[1] 25177», где 1— идентификатор задания.

Теперь вам следует использовать команда disown. Для приведенного выше примера это будет:

disown 1

Или выполните все задания (потому что у вас только одно):

disown

Для получения более подробной информации см., например, Linux / Unix: команда disown.

Связанный контент