0

我尝试执行这个示例脚本(https://oss.trac.surfsara.nl/pbs_python/wiki/TorqueUsage/Scripts/Submit

#!/usr/bin/env python
import sys
sys.path.append('/usr/local/build_pbs/lib/python2.7/site-packages/pbs/')
import pbs

server_name = pbs.pbs_default()
c = pbs.pbs_connect(server_name)
attropl = pbs.new_attropl(4)
# Set the name of the job
#
attropl[0].name  = pbs.ATTR_N
attropl[0].value = "test"
# Job is Rerunable
#
attropl[1].name  = pbs.ATTR_r
attropl[1].value = 'y'
# Walltime
#
attropl[2].name  = pbs.ATTR_l
attropl[2].resource = 'walltime'
attropl[2].value = '400'
# Nodes
#
attropl[3].name  = pbs.ATTR_l
attropl[3].resource = 'nodes'
attropl[3].value = '1:ppn=4'
# A1.tsk is the job script filename
#
job_id = pbs.pbs_submit(c, attropl, "A1.tsk", 'batch', 'NULL')
e, e_txt = pbs.error()
if e:
    print e,e_txt
print job_id

但 shell 显示错误“15025 队列已存在”。使用 qsub 作业正常提交。我的服务器上有一个队列“批处理”。扭矩版本 - 4.2.7。pbs_python 版本 - 4.4.0。

我应该怎么做才能开始新工作?

4

2 回答 2

1

这里有两件事。首先,pbs_python 中有一个错误,将 15025 错误代码映射到“队列已存在”。查看扭矩的来源,我们看到 15025 实际上映射到错误“作业执行错误的 UID”,这意味着在扭矩服务器上,守护程序无法确定您提交的用户是否被允许运行作业。这可能是因为几件事:

  1. 您提交的用户在运行 pbs_server 的机器上不存在
  2. 您提交的主机不在 pbs_server 的“submit_hosts”参数中。

解决方案 1

对此的补救措施取决于您如何跨系统验证用户,您可以使用/etc/hosts.equiv指定允许提交的用户/主机,该文件需要分发到所有扭矩节点以及扭矩服务器机器. 使用 hosts.equiv 非常不安全,我实际上并没有在其中使用它。我们使用中央 LDAP 服务器对网络上的所有用户进行身份验证,并且没有这个问题。您还可以手动将用户添加到所有扭矩节点和扭矩服务器,注意确保所有系统上的 UID 相同。

解决方案 2

如果 #1 不是您的问题(我怀疑是),您可能需要将要提交的机器的主机名添加到扭矩服务器上的“submit_hosts”参数中。这可以通过 qmgr 来完成:

[root@torque_server ]# qmgr -c "set server submit_hosts += hostname.example.com" 
于 2014-05-09T00:57:03.450 回答
0

您使用的 pbs python 库是为扭矩 2.4.x 编写的。

扭矩的内部 API 在扭矩 4.0.x 中大部分被重写。该库很可能需要为新的 API 编写。

目前扭矩的开发人员不测试任何外部库。他们有可能随时破裂。

于 2014-05-02T19:54:37.707 回答