Я пытаюсь сделать a 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:
#!/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:
Поскольку можно читать, действительно важно выполнить его в фоне. Любой пользователь, которые зарегистрированы, должен смочь поместить его в передний план. Пользователи соединяются с SSH с терминалом.
Вы не можете передний план процесс от другой сессии. Функциональность, которую Вы хотите, вероятно, возможна с эти screen
команда.
Что касается приложения Java, не удающегося работать в init.d; Вы не изменяетесь на /opt/glassfish/domains/domain1/applications/AS/WEB-INF/classes
папка. Вы имеете в своем пути к классу, таким образом, имеет значение, откуда Вы работаете.
Идеально, я думаю, что необходимо сохранить сценарий удара и выполнить это от init.d. Однако Вы могли также добавить полный путь к своему init.d пути к классу явно. Хотя я подозреваю, что необходимо будет использовать screen
из-за неспособности к переднему плану приложение.
экран For, это - пример того, что Вы ищете
$ screen -S myScreen -d -m ./dostuff.sh
$ screen -r myScreen
fg
числа задания использования, не PIDs:
fg: fg [job_spec]
Move job to the foreground.
Число задания является числом в скобках ([1]
в этом случае).
Вместо fg 10119
, используйте любой из:
fg
fg 1
Если это должно быть выполнено в init сценарии, необходимо использовать screen
(или tmux
) если Вы хотите, чтобы произвольные пользователи принесли его к переднему плану.