5

2000 個のジョブがキューに入れられていて、それらをqdel allで削除しようとすると、実行中のジョブを最初に削除しようとし続けるという問題があります。Runningこれは、リストからの削除がリストよりも遅いため、ジョブが削除されるまで長い間待たなければならないことを意味しIdleます。

Idleしたがって、ジョブに触れずにすべてのジョブを削除するにはどうすればよいRunningですか?

4

3 に答える 3

1

ジョブ ID が連続している場合は、Bash のブレース拡張を使用できます。例えば:

$ echo {0..9}
0 1 2 3 4 5 6 7 8 9

1000 から 2000 までの範囲のすべてのジョブを削除するために転送すると、qdelコマンドは次のようになります。

qdel {1000..2000}

これは、(他のユーザーから) 削除することを許可されていないジョブ ID がある場合でも機能する可能性があります。それらは単に無視する必要があります。(未検証)

于 2015-03-11T15:53:40.123 に答える
0

パイソン:

    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))
于 2014-01-17T15:09:35.807 に答える