명령줄을 통해 Java 프로세스를 시작합니다. java ...
. 이것을 this 라고 부르겠습니다 JAVA_COMMAND
. 시작 스크립트를 사용하여 백그라운드에서 이 Java 명령을 실행한 다음 PID를 변수에 저장하여 프로세스를 종료하는 중지 스크립트를 만들려고 합니다.
my_app_start.sh
:
#!/bin/bash
directory=$HOME/apps/myApp/files
current_date=$(date +"%Y-%m-%d-%T")
log_path="$HOME/apps/myApp/logs"
log_file="$log_path/app_output_$current_date"
err_file="$log_path/app_error_$current_date"
nohup JAVA_COMMAND > $log_file & export MY_APP_PID=$!
그런 다음 다음과 같은 스크립트를 얻습니다.
start.sh
:
source ./my_app_start.sh
그런데 확인해 보니 비어 MY_APP_PID
있습니다 echo $MY_APP_PID
. 다음과 같이 편집할 때 my_app_start.sh
:
#!/bin/bash
directory=$HOME/apps/myApp/files
current_date=$(date +"%Y-%m-%d-%T")
log_path="$HOME/apps/myApp/logs"
log_file="$log_path/app_output_$current_date"
err_file="$log_path/app_error_$current_date"
nohup JAVA_COMMAND > $log_file & MY_APP_PID=$! & echo $MY_APP_PID
비어 있지만 echo $!
프로세스 PID를 직접 출력하는 경우입니다.
왜 이런 일이 발생합니까? 내보낸 변수가 비어 있는 이유는 무엇입니까?