我在我管理的某个生产环境中观察到一些非常好奇的行为。我从来没有见过这样的东西,也许你有人有想法。
基本上我有两个shell脚本,让我们称它们为主脚本。主脚本是我从bash命令行启动的脚本,从主脚本中调用从脚本。
以下是调用slave脚本的主脚本的相关部分(称为' import_CSV2UNISERV_L.sh'):
SCRIPT_EXEC_IDS=$($SCRIPTDIR/import_CSV2UNISERV_L.sh init NL_INTER kub-b.puc.ov.otto.de 3>&1 1>&4)
typeset -i RETCODE=$?
随后,奴隶脚本在某个时刻将以"退出0"结束执行,此时我希望主脚本继续执行"排版"命令。但这从未发生过。
当我使用" bash -x"执行脚本时,我可以看到"退出0"仍然处理,但之后执行只是停止并永远挂起。这是人们可以观察到的最后一个输出:
+ echo '15.10.2014 07:40:55 AM - Ende import_CSV2UNISERV_L.sh'
15.10.2014 07:40:55 AM - Ende import_CSV2UNISERV_L.sh
+ exit 0
我不知道造成这种情况的原因甚至如何进一步调试,我绝对迷失了: - (
我确实发现当"退出0"是奴隶脚本中的第一个命令,然后一切正常。所以它似乎与我在slave脚本中做的事情有关,但是那个脚本长达数百行,所以通过反复试验找出哪一行会导致这种情况几乎是不可能的。
关于所有这一切的另一个特殊之处在于,自2010年以来,这些脚本在生产环境中一直未被修改(我检查了颠覆!),从那时起它们每天都在运行。仅从上周末开始,当我们有一个与这些脚本无关的软件版本时,就会出现问题。所以似乎有联系,但我不知道在哪里。
我想我正在寻找一种更进一步调试的方法,如何找出阻止执行的方式,而不是完全成熟的解决方案(这会有点期待:-))
关于如何推进这种情况的任何想法都将非常感激。提前感谢您抽出宝贵时间!
祝你好运
马里奥