Хорошо, я прошу прощения. Поиграв с процессом, убив его и запустив, похоже, я не заканчиваю сценарий должным образом.
У меня есть сценарий csh
, который я запускаю для запуска Java-приложения в системе AIX.
Что я обычно делаю:
В машинописи / терминале я запускаю
startApp.csh >> ../log/app.log &
Но я столкнулся с проблемой, когда startApp.csh
не остановится после запуска приложения Java. Это проявляется в фоновом режиме, как:
/bin/csh startApp.csh
вдоль стороны процесса Java $JRE_HOME/bin/java -XMS16M -Xmx512M \-Set \-all \-necessary \-environments $argv[*]
. Они оба теперь зависят друг от друга, чтобы продолжать бежать. Если я убью /bin/csh startApp.csh
, java-приложение не остановится с моими вызовами порта, если я не сделаю kill -9
startApp.csh
#!/bin/csh
setenv JAR_HOME /to/directory/
setenv JAVA_HOME /to/directory/
setenv JRE_HOME /to/directory/
set CLASSPATH="${CLASSPATH}:$to/path"
$JRE_HOME/bin/java -XMS16M -Xmx512M \-Set \-all \-necessary \-environments $argv[*]
Я не знаю, как заставить мой скрипт завершиться при запуске java-приложения. Как мне этого добиться?
Обновление:
Это то, что я пытался сделать так, чтобы дочерний процесс java выполнялся сам по себе, а родительский shell-скрипт умер.
В машинописи / терминале я запускаю
startApp.csh >> ../log/app.log
#!/bin/csh
setenv JAR_HOME /to/directory/
setenv JAVA_HOME /to/directory/
setenv JRE_HOME /to/directory/
set CLASSPATH="${CLASSPATH}:$to/path"
nohup $JRE_HOME/bin/java ... $argv[*] &
nohup command &
проигнорирует тот факт, что родительский объект закончился, и вернет меня к моей машинке / терминалу для следующего ввода.
Я просто недостаточно знаю, имеет ли значение, что процесс запускается как ребенок с PPID 1.