最後に実行されたコマンドの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を直接出力する場合です。

なぜこれが起こるのですか?エクスポートされた変数が空であるのはなぜですか?

ベストアンサー1

おすすめ記事