我有一个开始使用Ant脚本的STAF作业,所有这些都在功能ID下运行。 ant脚本执行基本的“init”任务,它们工作正常,然后挂起以下任务之一:delete,mkdir或junit,具体取决于我在文件系统中做了多少混乱。
<target name="run.nightly.tests" depends="init">
<delete dir="/path/results/latestDate" />
<mkdir dir="/path/results/latestDate" />
<chmod perm="777" dir="/path/results/latestDate" />
<junit printsummary="on" fork="no">
<!-- typical classpath/tests setup snipped -->
</junit>
</target>
我能够sudo这个功能ID并从shell运行相应的命令就好了(例如:rm -rf / path / results / latestDate)。显然,在功能id下在Ant环境中运行会有所不同。 (事实上,我可以用我自己的id运行脚本)
在我的脚本运行之前,/ path / results有777个权限,当/ path / results / latestDate存在时,它拥有相同的功能ID w / 777权限。
STAF启动此脚本:
export ANT_HOME=/opt/apache-ant-1.8.2
#This entire directory tree and jar files are world r+x
LIB_DIR=/home/afreed/automation/dependencies/mail
ant -debug -verbose -buildfile nightlyTest.xml -lib ${LIB_DIR}/mail.jar:${LIB_DIR}/activation.jar
我会理解如果Ant在任何这些任务中失败并出现权限错误,但我无法理解为什么它会挂起。
我想帮助a)确定为什么有挂起或b)如何将挂起转换为硬故障
答案 0 :(得分:0)
解决了,Ant脚本挂在正在等待STDIN输入的exec命令上。 (执行一直持续到那一点,因为它是使用'spawn'属性启动的。)当我从'init'目标中删除这个'exec'任务时,Ant脚本按预期运行。
<!-- hanging task in init-->
<exec executable="blah.sh" spawn="true">