qsub提交到PBS的脚本中不能使用 &(后台运行命令)?!

pbs_script.sh

#!/bin/bash -
myprog arg1 arg2 &


直接前台交互运行上面的脚本(即:./pbs_script.sh)时,myprog能正常运行并输出相应结果。但是,如果用qsub提交上面的脚本到PBS作业系统时,myprog却不会被运行。


若去掉后台运行命令&,则提交PBS时myprog也能正常运行。即:

myprog arg1 arg2


其原因在于:

原来的代码,PBS作业系统读取脚本到第二行&处时,将 myprog 交给后台,然后立即退出了该脚本。但是此时扔到后台的myprog还没来得及返回运行结果给PBS。所以造成PBS没有返回myrpog的结果给用户。

据此,任何PBS脚本(即用qsub命令提交给PBS作业系统的shell脚本)中,一旦使用了后台运行命令&,其后一定要加上wait命令。即:

#!/bin/bash -
myprog arg1 arg2 &
wait
这样,PBS读取完第二句后会先等待后台返回myprog的运行结果,然后才退出该脚本。



Thanks for suggests from:  http://biowulf.nih.gov/user_guide.html



你可能感兴趣的:(集群计算)