직렬 연결을 사용하여 원격 장치에서 일부 벤치마크를 실행하는 프로세스를 자동화하고 싶습니다. 벤치마크가 멈추지 않고 실패할 수 있으므로 차단을 방지하기 위해 시간 제한을 추가하고 싶습니다. 명령 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
이러한 제한 하에서 명령 시간 초과를 설정하는 방법을 아시나요?