当作业控制不可用时,没有超时命令的超时 shell 命令

当作业控制不可用时,没有超时命令的超时 shell 命令

我想使用串行连接自动执行在远程设备上进行一些基准测试的过程,基准测试可能会在不停止的情况下失败,因此我想添加超时以防止阻塞。该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

知道如何在这些限制下使命令超时吗?

相关内容