![백그라운드 프로세스의 스크립트가 충돌했는지 확인하는 방법이 있습니까?](https://linux55.com/image/194898/%EB%B0%B1%EA%B7%B8%EB%9D%BC%EC%9A%B4%EB%93%9C%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%9D%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EA%B0%80%20%EC%B6%A9%EB%8F%8C%ED%96%88%EB%8A%94%EC%A7%80%20%ED%99%95%EC%9D%B8%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%B4%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
저는 Ubuntu 20.04를 사용하고 있으며 ffmpeg 명령이 백그라운드에서 충돌하는지 확인하는 스크립트를 작성하고 싶습니다. 충돌이 발생한 후에는 명령을 다시 초기화해야 합니다. 누구든지 bash 스크립트 코드를 제공할 수 있나요?
답변1
다음은 .뿐만 아니라 모든 명령에 적용됩니다 ffmpeg
.
가장 간단한 경우
: &
wait -n "$!"
echo "Status was ${?}."
false &
wait -n "$!"
echo "Status was ${?}."
(exit 17;) &
wait -n "$!"
echo "Status was ${?}."
다중 병렬 명령
declare -i i
declare -ai pids=()
for ((i = 10; i < 20; ++i)); do
(exit "$((i))";) &
pids+=("$!")
done
for i in "${!pids[@]}"; do
wait -n "${pids[i]}"
echo "Status of command Nr. ${i}, PID ${pids[i]}, was ${?}."
done
관로
false | true | (exit 11;) | true | (exit 7;) | false
declare -i pipestatus=("${PIPESTATUS[@]}")
for i in "${!pipestatus[@]}"; do
echo "Pipeline stage ${i} terminated with status ${pipestatus[i]}."
done