我有一个 perl 脚本,它为二进制程序的输入准备文件,并将二进制程序的执行提交给 SGE 排队系统版本 6.2u2。
提交作业时可以-sync y
选择允许父 perl 脚本使用 waitpid 函数监视已提交作业的状态。
这也非常有用,因为向父 perl 脚本发送 SIGTERM 会将此信号传播给每个子代,然后子代会将这个信号转发到 qsub,从而优雅地终止所有关联的提交作业。
因此,我能够使用此-sync y
选项提交作业是相当重要的。
不幸的是,我不断收到以下错误:
Unable to initialize environment because of error: range_list containes no elements
请注意“包含”的不正确拼写。那不是错字。它只是向您展示了代码/错误消息的这个区域必须维护得多么糟糕。
产生此错误的尝试提交甚至无法生成 STDOUT 和 STDERR 文件*.e{JOBID}
和*.o{JOBID}
. 提交完全失败。
在 google 上搜索此错误消息只会导致在晦涩的留言板上出现未解决的帖子。
这个错误甚至不会可靠地发生。我可以重新运行我的脚本,相同的作业甚至不一定会产生错误。我尝试从哪个节点提交作业似乎也无关紧要。
我希望这里有人可以解决这个问题。
回答这些问题中的任何一个都可以解决我的问题:
- 此错误是否在较新版本的 SGE 中仍然存在?
- 我可以更改 qsub 的命令行选项以避免这种情况吗?
- 这个错误消息到底在说什么?