Как запустить программу Java в фоновом режиме?

Я пытаюсь создать скрипт init.d, который должен запустить эту java-команду:

java -cp ./:/opt/glassfish/domains/domain1/lib/*:/opt/glassfish/lib/* com.name.it.svcimpl.OrderRequestDispatcher &

С & он запускается как фоновый процесс, и это нормально. Проблемы начинаются, когда вы пытаетесь перейти на передний план:

[1] 10119
user@server:$ fg 10119
-bash: fg: 10119: no such job

После того, как вы нажимаете enter, это происходит:

[1]+  Stopped                 java -cp ./:/opt/glassfish/domains/domain1/lib/*:/opt/glassfish/lib/* name.alcar.it.svcimpl.OrderRequestDispatcher

Как вы видите, не было никакого процесса как 10119, так почему он останавливается? Но все труднее, когда команда находится в скрипте init.d bash:

#!/bin/bash
(cd /opt/glassfish/domains/domain1/applications/AS/WEB-INF/classes; java -cp ./:/opt/glassfish/domains/domain1/lib/*:/opt/glassfish/lib/* com.name.it.svcimpl.OrderRequestDispatcher &)

(необходимо запустить по пути /opt/glassfish/domains/domain1/applications/AS/WEB-INF/classes)

Теперь мой вопрос как не java-программист:

Возможно ли запустить java-программу в фоновом режиме с возможностью ее выделения из любого сеанса терминала?

Как вы можете прочитать, действительно важно запустить его в фоновом режиме. Любой пользователь, который вошел в систему, должен иметь возможность вывести его на передний план. Пользователи подключаются с SSH к терминалу.

1
задан 24 February 2016 в 20:02

1 ответ

fg использует номера заданий, а не PID:

fg: fg [job_spec]
    Move job to the foreground.

Номер задания - это число в скобках ([1] в этом случае).

Вместо [ f5], используйте любой из:

fg
fg 1

. Если он должен запускаться в сценарии инициализации, вы должны использовать screen (или tmux), если вы хотите, чтобы произвольные пользователи на переднем плане.

2
ответ дан 23 May 2018 в 13:18
  • 1
    Я такой свалкой. Спасибо, что решает проблему. Но еще один вопрос: способен ли он для каждого подключенного пользователя? – user3772108 24 February 2016 в 20:07
  • 2
    @ user3772108 Если один пользователь начал и запустил его, другой пользователь не может вывести его на передний план. Используйте screen или tmux, если это необходимо. – muru 24 February 2016 в 20:09
  • 3
    Я понимаю. Я попытаюсь получить некоторые знания о screen. Спасибо за эту большую помощь! :) – user3772108 24 February 2016 в 20:13

Другие вопросы по тегам:

Похожие вопросы: