백그라운드 프로세스의 스크립트가 충돌했는지 확인하는 방법이 있습니까?

백그라운드 프로세스의 스크립트가 충돌했는지 확인하는 방법이 있습니까?

저는 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

관련 정보