gpt4 book ai didi

linux - KSH 中包装器脚本的退出状态不正确

转载 作者:太空狗 更新时间:2023-10-29 12:05:36 26 4
gpt4 key购买 nike

我们有一个用于 Teradata TPT 实用程序的包装器脚本。包装器脚本非常简单,但问题是包装器的退出状态与实用程序的退出状态不同。在许多情况下,即使实用程序失败,脚本也会返回 0。我已将退出状态保存在一个单独的变量中,因为在退出之前需要完成一些步骤,但使用该变量的值退出似乎不起作用。或者即使日志明确指定了一些其他状态,实用程序是否在某些故障的情况下返回状态 0?

更糟糕的是,这种行为是非常随机的,有时脚本确实会因实用程序的退出状态而失败。我想确定实用程序的退出状态是否存在问题。

脚本通过 KSH 运行。包装器脚本的最后一部分是:

tbuild -f $sql.tmp -j ${id}_$JOB >$out 2>&1
ret_code=$?

cd ${TWB_ROOT}/logs
logpath=`ls -t ${TWB_ROOT}/logs/${id}_${JOB}*.out |head -1`
logpath1=${logpath##*/}
logname=${logpath1%-*}

tlogview -l ${logpath} > /edw/$GROUP/tnl/jobs/$JOB/logs/tpt_logs/${logname}.log

###Mainting 3 tpt binary log files
if [ $ret_code -eq 0 ]
then
binout=$TPTLOGDIR/${logname}.dat
binout1=$TPTLOGDIR/${logname}.dat1
binout2=$TPTLOGDIR/${logname}.dat2

[ -f $binout1 ] && mv $binout1 $binout2
[ -f $binout ] && mv $binout $binout1

mv "$logpath" "/edw/${GROUP}/tnl/jobs/$JOB/logs/tpt_logs/${logname}.dat"
fi

rm -f $sql.tmp
echo ".exit"
exit $ret_code

在此先感谢您的帮助和建议。

最佳答案

脚本看起来没问题,确实应该返回与 tbuild 实用程序相同的退出代码。

它归结为对特定产品的了解。

我从来没有使用过这些产品中的任何一个,但是 Teradata 有一个关于并行传输器的丰富的用户指南,带有明确的 Post-Job Considerations部分,警告:

Even if the job completed successfully, action may still be required based on error and warning information in the job logs and error tables.

因此从技术上讲,一项工作可能会完成,但结果可能会不时发生变化。

我想您必须定义自己的策略并扫描日志文件以获取警告和错误消息的模式,然后为语义失败生成自己的退出代码。 logstashsplunk 等工具可能会派上用场。


顺便说一句,您可以考虑使用 logrotate 来旋转 $TPTLOGDIR/${logname}.dat 文件。

关于linux - KSH 中包装器脚本的退出状态不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14260454/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com