コマンドラインから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を直接出力する場合です。
なぜこれが起こるのですか?エクスポートされた変数が空であるのはなぜですか?