如 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