![병렬로 실행되더라도 단일 스크립트에 대한 반환 코드](https://linux55.com/image/178403/%EB%B3%91%EB%A0%AC%EB%A1%9C%20%EC%8B%A4%ED%96%89%EB%90%98%EB%8D%94%EB%9D%BC%EB%8F%84%20%EB%8B%A8%EC%9D%BC%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%97%90%20%EB%8C%80%ED%95%9C%20%EB%B0%98%ED%99%98%20%EC%BD%94%EB%93%9C.png)
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