Используйте определенную версию JRE / JDK для определенных программ

Когда-либо полезно сделать nohup ... &? Да. Если Вы только запускаете процесс "в фоновом режиме" с &, тот новый процесс все еще имеет членство в "группе процесса исходной оболочки". Если та оболочка или группа процесса получают определенные сигналы (SIGHUP, например), по умолчанию они выходят. Это означает это при выполнении процесса с & от оболочки, запущенной xterm, или rxvt или некоторым другим эмулятором терминала работы с окнами, когда Вы закрываете окно, фоновый процесс получает SIGHUP. Большая часть небрежно записанного кода не обрабатывает SIGHUP и поэтому выходит.

Если Вы делаете nohup ... &, nohup наборы команд SIGHUP к проигнорированному, и затем должностные лица команда. Это недавно exec'ed команда сохраняет маску сигнала этим nohup установка, если команда не делает некоторый сигнал, обрабатывающий себя. При закрытии xterm или rxvt или что бы то ни было, ядро поставляет SIGHUP процессу команды, который проигнорирован. Это продолжает бежать.

Выполнение a nohup на команде позволяет, она для продолжания бегать за Вами закрывает xterm, или Вы выходите из системы.

7
17.11.2012, 19:51
2 ответа

Если я хочу использовать другую версию Java, я делаю две вещи:

  • Во-первых, набор JAVA_HOME как подходящий для той установки Java и экспорта это.
  • Затем обновите мой путь с '$ PATH= {JAVA_HOME} / мусорное ведро: $ {ПУТЬ}.

Из-за пути PATH ищется, если Вы добавите к концу пути, то новая версия не будет использоваться. Что-либо добавило в конец пути, только добавляет новые команды, он не заменяет существующие команды. Предварительное ожидание к PATH переменная будет использовать команду в новом каталоге в предпочтении к другой команде.

Команды как java часто включайте много символьных ссылок, прежде чем Вы доберетесь до программы. Используя ${JAVA_HOME}/bin обходы любая косвенность, и предоставляют прямой путь различным связанным с Java командам.

Править: Если Вы хотите запустить только определенные программы с другой версией Java, Вы могли бы использовать обертку как это:

#!/bin/bash
# javawrapper - replace Java for a command.
export JAVA_HOME=$1; shift
PATH=${JAVA_HOME}/bin:$PATH
$*

Можно затем назвать обертку с командой как.

javawrapper /opt/java6 PyCharm

Вы могли также добавить псевдоним к Вашему ~/.bashrc файл как это

alias PyCharm='javawrapper /opt/java6 PyCharm'
4
27.01.2020, 20:17
  • 1
    ну, который решает половину проблемы; я добавлял в конец, а не начало $PATH. Но как я только выполняю другую версию Java для определенных приложений? –  NT3RP 17.11.2012, 20:43
  • 2
    я обновил свой ответ. Однако в случае как Ваш, у меня редко есть потребность сохранить программы с помощью версии Java по умолчанию. –  BillThor 17.11.2012, 21:06

ArchLinux mantiene los diferentes JDKs en el directorio /usr/lib/jvm, cambiar el JDK por defecto es cuestión de modificar los enlaces simbólicos allí:

# ls -al /usr/lib/jvm  
lrwxrwxrwx   1 root root     14 May 31 19:58 default -> java-8-openjdk
lrwxrwxrwx   1 root root     18 May 31 19:58 default-runtime -> java-8-openjdk/jre
drwxr-xr-x   7 root root   4096 May 27 21:45 java-10-openjdk
drwxr-xr-x   6 root root   4096 May 31 14:35 java-8-openjdk
drwxr-xr-x   7 root root   4096 May 31 19:56 java-9-openjdk

Arch tiene un guión especial para eso:

# archlinux-java set java-10-openjdk

y obtienes:

# java -version
openjdk version "10.0.1" 2018-04-17
OpenJDK Runtime Environment (build 10.0.1+10)
OpenJDK 64-Bit Server VM (build 10.0.1+10, mixed mode)

también puede usar las opciones 'arreglar' y 'estado':

# archlinux-java fix
# archlinux-java status
Available Java environments:
  java-10-openjdk (default)
  java-8-openjdk
  java-9-openjdk
7
27.01.2020, 20:17

Теги

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