如果出现任何问题,如何使ksh脚本自行终止?

时间:2016-10-04 10:07:19

标签: linux bash algorithm unix ksh

我写了几个ksh脚本,大约6个脚本。 这些是为处理大量数据文件而编写的,类似207 MB大。在运行脚本时,有时它会卡住并且不会结束。 人为干扰是必需的。 在生产环境中,我希望它能够自动运行,并且应该能够在没有任何人为中断的情况下自动结束。 如果文件存在某些问题,脚本应该结束并开始执行下一个文件。 如果它被卡住了怎么能让它自己终止?

1 个答案:

答案 0 :(得分:0)

我认为,您看到问题的唯一方法是脚本耗时太长。在这种情况下,一个在超时后杀死进程的简单脚本就足够了:

#!/bin/bash
# Killersrcipt
PID=$1
TIME=$2

typeset -i i
i=0

while [ $i -lt  $TIME ] ; do
  if ps $PID > /dev/null ; then
        i=$i+1
        sleep 1
  else
        exit 0
  fi
done

kill $PID

您的工作流程将类似于:

#!/bin/bash
process_1 &
killerscript $! 60
process_2 &
killerscript $! 30
...

如果您有其他方法可以检测流程中的问题,您可以轻松地将它们添加到killerscript中的循环中。