我想使用串行连接自动执行在远程设备上进行一些基准测试的过程,基准测试可能会在不停止的情况下失败,因此我想添加超时以防止阻塞。该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
。
我尝试与 shell 手动交互进行调试,我可以运行
sleep 60 & sleep 5; kill $!
但不能在 for 循环中运行,因为这样
for i in {1..3}; do
sleep 60 & sleep 5; kill $!;
done
仍然抛出!: event not found
错误。
PS:当我打开一个新的shell时,它告诉我no job control in this shell
知道如何在这些限制下使命令超时吗?