如果有任何问题,如何让 ksh 脚本自行终止?

How can I make a ksh script terminate itself if any issues?

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

我认为,您看到问题的唯一方式是脚本花费的时间太长。在这种情况下,一个在超时后终止进程的简单脚本就足够了:

#!/bin/bash
# Killersrcipt
PID=
TIME=

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 的循环中。