pidからプロセス情報(コマンドなど)を取得する

pidからプロセス情報(コマンドなど)を取得する

私はこのコードを持っています:

     for job in `jobs -p`; do
         code=0;
         wait ${job} || code=$?
         if [[ "${code}" != "0" ]]; then
            echo "At least one job failed with exit code => ${code}" ;
            exit 1;
         fi
     done

次の行の直後:echo "終了コード=> $ {CODE}のため、1つ以上の操作が失敗しました。";

次のように失敗したコマンドを記録する行を追加したいと思います。

     for job in `jobs -p`; do
         code=0;
         wait ${job} || code=$?
         if [[ "${code}" != "0" ]]; then
            echo "At least one job failed with exit code => ${code}" ;
            echo "The job that failed was $(ps -p ${job})"
            exit 1;
         fi
     done

jobaは単なる子プロセスのpidではありません。問題は次のようになります。

echo "The job that failed was $(ps -p ${job})"

あまり意味がありません。 pid = jobが与えられたら、実際にコマンドを実行する必要があります。

ベストアンサー1

コマンドを実行すると、psプロセスはすでに終了しています。 (返品コードを処理していますか?)

psスクリプトの前半でコマンドを実行し、wait変数に保存するようにロジックを変更するだけです。

for job in $(jobs -p); do
    process_info=$(ps -p "${job}" -o args=)
    wait "${job}" || {
        code=$?
        echo "Job running [${process_info}] failed with exit code ${code}." >&2
        exit 1
    }
done

おすすめ記事