마지막으로 실행된 명령의 PID가 내보내지거나 저장되지 않았습니다.

마지막으로 실행된 명령의 PID가 내보내지거나 저장되지 않았습니다.

명령줄을 통해 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를 직접 출력하는 경우입니다.

왜 이런 일이 발생합니까? 내보낸 변수가 비어 있는 이유는 무엇입니까?

관련 정보