
nohup
Unixのコマンドを使用して複数のテーブル名を引数として並列に実行されているjarファイルがあります
nohup java -jar batchorch.jar $tablename &
すべてのjarファイルのステータスを取得するために以下の行を使用しました
oldpid=$!
wait $oldpid
echo $?
jar
並列実行中の各ファイルのステータスを個別に取得するにはどうすればよいでしょうか?
答え1
バックグラウンド プロセスを終了順に処理する方法はわかりません。
#!/bin/bash
declare -a bg_pids
ec=0
(sleep 10; exit "$ec") &
bg_pids+=($!)
((ec++))
(sleep 10; exit "$ec") &
bg_pids+=($!)
((ec++))
(sleep 10; exit "$ec") &
bg_pids+=($!)
((ec++))
for pid in "${bg_pids[@]}"; do
echo -n "PID ${pid}: "
wait -f "$pid"
echo $?
done
出力:
PID 29807: 0
PID 29808: 1
PID 29810: 2
答え2
GNU Parallel では、次の場所で情報を入手できます--joblog
。
nohup parallel --joblog my.log java -jar batchorch.jar {} ::: table1 table2 table3
関連する列は Exitval です。
Seq Host Starttime JobRuntime Send Receive Exitval Signal Command
1 : 1597644202.601 0.003 0 0 1 0 java -jar batchorch.jar table1
2 : 1597644202.604 0.008 0 0 1 0 java -jar batchorch.jar table2
3 : 1597644202.613 0.005 0 0 1 0 java -jar batchorch.jar table3