Ubuntu 如何使用qdel all仅删除空闲作业
我遇到一个问题,如果我有2000个作业排队,并尝试使用Ubuntu 如何使用qdel all仅删除空闲作业,ubuntu,cluster-computing,qsub,torque,Ubuntu,Cluster Computing,Qsub,Torque,我遇到一个问题,如果我有2000个作业排队,并尝试使用qdel all删除它们,它将继续尝试先删除正在运行的作业。这意味着我必须等待很长时间才能删除作业,因为从运行列表中删除作业要比从空闲列表中删除作业慢 因此,如何在不接触正在运行的作业的情况下删除所有空闲的作业 import os import subprocess cmd = [ 'showq' ] output = subprocess.Popen( cmd, stdout=subprocess.PIPE
qdel all
删除它们,它将继续尝试先删除正在运行的作业。这意味着我必须等待很长时间才能删除作业,因为从运行
列表中删除作业要比从空闲
列表中删除作业慢
因此,如何在不接触正在运行的作业的情况下删除所有空闲的作业
import os
import subprocess
cmd = [ 'showq' ]
output = subprocess.Popen( cmd, stdout=subprocess.PIPE ).communicate()[0]
jobid = [int(s) for s in output.split() if s.isdigit()]
jobid2 = []
for i in jobid:
if i > 100000:
jobid2 += [i]
jobid2.sort()
jobid2.reverse()
#jobid2 = jobid2[2000:3000]
for i in jobid2:
print len(jobid2)
os.system('qdel ' + str(i))
如果您喜欢使用shell脚本,可以设置如下内容。如果您的空闲作业以数字顺序排列,这是最简单的解决方案,它不依赖于在扭矩中设置适当的变量
#!/bin/csh
# delete the range of jobs via counter i
module load torque
module load maui
set i = 1351208
while ( $i < 1351668 )
qdel $i
@ i++
end
#/bin/csh
#通过计数器i删除作业范围
模块负载扭矩
模块加载毛伊岛
组i=1351208
而($i<1351668)
qdel$i
@我++
结束
如果作业ID按顺序排列,则可以使用Bash的大括号扩展。例如:
$ echo {0..9}
0 1 2 3 4 5 6 7 8 9
传输到删除1000到2000之间的所有作业时,qdel
命令将为:
qdel {1000..2000}
如果存在不允许(从其他用户)删除的作业ID,此甚至可能会起作用。它们应该被忽略。(未测试)请使用常用选项组合粘贴几行和
qstat
输出的标题。通过解析此输出,通常可以准确提取要删除的作业的ID。