如 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
在使用qsub提交到PBS作业系统的shell脚本中,如果包含&进行后台运行,会导致程序未正常运行。原因是PBS在遇到&时会立即退出脚本,而myprog还没来得及返回结果。解决方案是在使用&后添加wait命令,确保程序执行完毕。
1万+

被折叠的 条评论
为什么被折叠?



