我尝试执行此示例脚本(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。
我应该怎么做才能开始新工作?
答案 0 :(得分:1)
这里有两件事。首先,pbs_python中存在一个错误,它将15025错误代码映射到“Queue already exists”。查看source of torque我们看到15025实际上映射到错误“作业执行的错误UID”,这意味着在扭矩服务器上,守护程序无法确定您提交的用户是否被允许运行作业。这可能是因为以下几点:
解决方案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"
答案 1 :(得分:0)
您正在使用的pbs python库是针对扭矩2.4.x编写的。
扭矩的内部api用扭矩4.0.x重写。很可能需要为新的API编写库。
目前扭矩的开发人员不测试任何外部库。它们有可能随时破裂。