작업 제어를 사용할 수 없는 경우 시간 초과 명령이 없는 시간 초과 셸 명령

작업 제어를 사용할 수 없는 경우 시간 초과 명령이 없는 시간 초과 셸 명령

직렬 연결을 사용하여 원격 장치에서 일부 벤치마크를 실행하는 프로세스를 자동화하고 싶습니다. 벤치마크가 멈추지 않고 실패할 수 있으므로 차단을 방지하기 위해 시간 제한을 추가하고 싶습니다. 명령 timeout이 설치되지 않아 시스템에 프로그램을 설치할 수 없습니다.

시스템은 많은 기능이 비활성화된 최소 부팅 모드에서 실행되며 직렬 연결은 장치에서 명령을 실행하기 위한 유일한 옵션입니다.

다음은 시간 초과 없이 성공적으로 수행한 작업의 예입니다.

for f in find $(find /opt/usr/tmp/benchmark.files -name *.so); do\
  mv $f /root/_benchmark/${f##*/} &&
  benchmark_app --file=/root/_benchmark/${f##*/} 2>&1 |\
  tee /opt/usr/tmp/benchmark.files/`echo ${f##*/} | sed -re 's:lib(.*).so:\1:g'`;\
  rm -f /root/_benchmark/${f##*/};
done;
echo FINISHED

내가 그것을 다음과 같이 바꾸면 :

for f in find $(find /opt/usr/tmp/benchmark.files -name *.so); do\
  mv $f /root/_benchmark/${f##*/} &&
  benchmark_app --file=/root/_benchmark/${f##*/} 2>&1 |\
  tee /opt/usr/tmp/benchmark.files/`echo ${f##*/} | sed -re 's:lib(.*).so:\1:g'`& sleep 60; kill $!;\
  rm -f /root/_benchmark/${f##*/};
done;
echo FINISHED

오류로 인해 실패합니다 !: event not found.

디버깅을 위해 셸과 수동으로 상호작용을 시도했지만 실행할 수는 있지만 sleep 60 & sleep 5; kill $!이로 인해 for 루프 내에서는 실행할 수 없습니다.

for i in {1..3}; do 
sleep 60 & sleep 5; kill $!;
done

여전히 !: event not found오류가 발생합니다.

추신: 새 셸을 열면 다음과 같은 메시지가 표시됩니다.no job control in this shell

이러한 제한 하에서 명령 시간 초과를 설정하는 방법을 아시나요?

관련 정보