首页 > 解决方案 > 在 shell 脚本中超时并报告这些输入超时

问题描述

我想使用带有数千个输入文件的程序 Arlsumstat_64bit 进行分析。

Arlsumstat_64bit 读取输入文件 (.arp) 并写入结果文件 (sumstat.out)。每个输入都会根据参数“0 1”在结果文件 (sumstat.out) 上附加新行。
因此,我编写了一个 shell 脚本来执行同一文件夹中的所有输入 (*.arp)。但是,如果输入文件包含错误,shell 脚本将被卡住而没有任何后续处理。因此,我找到了一个带有“超时”的命令来处理我的问题。我做了一个shell脚本如下

#!/bin/bash

for sp in $(ls *.arp) ; 
do

echo "process start: $sp"


timeout 10 arlsumstat_64bit ${sp}.arp sumstat.out 1 0 

        rm -r ${sp}.res

        echo "process done: $sp"


done

但是,我仍然需要知道哪些输入文件失败了。如何制作一个列表来告诉我哪些输入文件是“超时”的?

标签: linuxshelltimeout

解决方案


下面的代码应该适合你:

  #!/bin/bash
  for sp in $(ls *.arp) ; 
  do
  echo "process start: $sp"
  timeout 10 arlsumstat_64bit ${sp}.arp sumstat.out 1 0 
  if [ $? -eq 0 ]
  then
    echo "process done sucessfully: $sp"
  else
    echo "process failed: $sp"
  fi
  echo "Deleting ${sp}.res"
  rm -r ${sp}.res
  done

推荐阅读