如果有任何问题,如何让 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 的循环中。
我写了几个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 的循环中。