我有一个STAF作业,它启动一个Ant脚本,所有脚本都在一个函数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)。显然,在Ant环境中,在函数id下运行有些不同。(事实上,我可以用自己的id很好地运行脚本)
/在我的脚本运行之前,path/results/777权限,当/path/results/latestDate存在时,它由具有777权限的同一功能id所有。
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)如何将挂起转换为硬故障
解决后,Ant脚本挂在等待STDIN输入的exec命令上。(执行一直持续到那个点,因为它是用"spawn"属性启动的。)当我从"init"目标中删除这个"exec"任务时,Ant脚本按预期运行。
<!-- hanging task in init-->
<exec executable="blah.sh" spawn="true">