Unixでのnohupコマンドの終了コードの問題

Unixでのnohupコマンドの終了コードの問題

私はnohupコマンドの終了ステータスをキャプチャし、そのステータスに基づいてメールを送信する方法を理解しようとしました。

以下は私のコードです。

if [[ "" !=  "$PID" ]]; then
    echo "killing $PID"
    kill -9 $PID
    nohup java -jar Xyz-port-0.0.1.jar &
    << Exit Code and then send mail if Exit 
      code is 0>>
    else 
    echo "Process doesn't exist"
    fi

ベストアンサー1

バックグラウンドタスクはいつも正常に開始されました:

$ sntaoehu &
[1] 33566
$ bash: sntaoehu: command not found
[1]+  Exit 127                sntaoehu
$ echo $?
0

nohupバックグラウンドでJavaプログラムを起動できず、コマンドが終了するまでスムーズに実行されるかどうかを検出できません。コマンドnohupが見つからないか開始できないか、javaJavaプログラムが終了するたびにコマンドが終了します。nohupバックグラウンドでプログラムを実行しません。これは単にプログラムがすべてのシグナルを無視し、プログラムがHUP終了するまで停止し、プログラムの終了状態を呼び出しシェルに返します。

作業が始まったらメールを送る失敗、あなたはできます

(
    nohup java -jar Xyz-port-0.0.1.jar
    status=$?
    if [ "$status" -eq 126 ] || [ "$status" -eq 127 ]; then
        # something wrong in launching java
        echo 'nohup failed to run java'
        printf 'nohup exit status is %s\n' "$status"
    elif [ "$status" -ne 0 ]; then
        # the java code returned an error
        echo 'java returned an error'
        printf 'java exit status is %s\n' "$status"
    else
        # everything went well and java exited ok
        echo 'java exited safely'
    fi | mail -s 'java job status report' [email protected]
) &

echo 'started background job'

つまり、バックグラウンドサブシェルを起動し、その中でプログラムを実行してから、126または127が返されるかどうかをテストします。コマンドが見つからないか起動できない場合は、nohupこれを実行してください。java

おすすめ記事