我遇到了一个问题,如果我有2000个作业排队并尝试使用qdel all
删除它,它会继续尝试首先删除正在运行的作业。这意味着我必须等待很长时间才能删除作业,因为从Running
列表中删除的列表比Idle
列表慢。如何使用qdel全部删除空闲作业
因此,如何删除所有Idle
作业而无需触摸Running
作业?
我遇到了一个问题,如果我有2000个作业排队并尝试使用qdel all
删除它,它会继续尝试首先删除正在运行的作业。这意味着我必须等待很长时间才能删除作业,因为从Running
列表中删除的列表比Idle
列表慢。如何使用qdel全部删除空闲作业
因此,如何删除所有Idle
作业而无需触摸Running
作业?
的Python:
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
如果作业ID是按顺序,你可以使用bash的支柱延伸。例如:
$ echo {0..9}
0 1 2 3 4 5 6 7 8 9
转入删除为1000年至2000年的所有作业,qdel
命令是:
qdel {1000..2000}
这威力即使有,你不准作业ID工作删除(从其他用户)。他们应该被忽略。 (未测试)
请粘贴几行文字和'qstat'输出的标题以及您常用的选项组合。通过解析该输出,您通常可以精确提取您想要删除的作业的ID。 –