無期限に実行されるJavaプログラムを含むシェルスクリプトを終了する

無期限に実行されるJavaプログラムを含むシェルスクリプトを終了する

私は仕事がありますautosys。このautosysタスクではスクリプトを実行していますshell。シェルスクリプトの実行無期限Javaプログラムを実行してみてください。無限forループについて話してください。

#!/bin/ksh

function abc() {
    java DemoJavaProgram
    RESULT=$?
    if[ $RESULT -eq 0 ]; then
        exit 0;
    else
        exit 1;
}
abc | tee output.file

上記のシェルスクリプトは何も返しませんが、Javaプログラムの実行に停止します。このautosys作業状態はRUNNING

成功せずにバックグラウンドで上記のコマンドを実行してみました&。この場合でも、成功しないままバックグラウンドでフルシェルスクリプトを実行してみました。

このようなスクリプトを終了する方法はありますか?

[tl;dr] Javaプログラムを起動してスクリプトを終了したい

ベストアンサー1

私はautosys自体に慣れていませんが、次のようにバックグラウンドで長期実行コマンドを起動できます。

#!/bin/ksh
nohup java DemoJavaProgram 1> output.file 2>&1 </dev/null &

このnohupコマンドを使用すると、javaコマンドが壊れた信号にも生き残ることができます。その後、入力と出力がリダイレクトされます。&最後の演算子は、コマンドがバックグラウンドで実行されるように強制します。

ここでは終了ステータスコードに頼ることはできません。何らかの理由でコマンドが起動しない場合は、java出力ファイルにエラーメッセージを書き込んで終了します。

おすすめ記事