Thursday, July 05, 2012

how to qdel a range of jobs


For example, I want to kill jobs with ids ranging from 7823111 to 7823118. One way to do it is of course to list all IDs after qdel, such as 


$ qdel 7823111 7823112 7823113 7823114 7823115 7823116 7823117 7823118


You can also do this in an elegant way, using seq command to generate the sequence number:


$ echo `seq -f "%.0f" 7823111 7823118`
7823111 7823112 7823113 7823114 7823115 7823116 7823117 7823118


Note that if you are using job array (-t) to control jobs, then it's easier to kill list of jobs in the array. Here is what "man qdel" says:

-t array_range
The array_range argument is an integer id or a range of integers. Multiple ids or id ranges can be combined in a comma delimted list. Examples: -t 1-100 or -t 1,10,50-100


7 comments:

  1. good one. there were no examples using range so it was not clear to me. I helped my case to delete some 100 jobs quickly.

    ReplyDelete
  2. qdel -u [user] can delete all queue tasks run by the same user. I find this helpful too.

    ReplyDelete
  3. qdel {17979..18028} is simpler

    ReplyDelete
  4. Anonymous6:35 PM

    thanks for this short one :)

    ReplyDelete
  5. you can select jobs based on a variety of criteria using qselect and pipe them to qdel with xargs e.g.

    qselect -u | xargs qdel

    to delete all jobs of a given user, -s R selects jobs with the state running, see the qselect docs for more refined selections.

    ReplyDelete
  6. This comment has been removed by the author.

    ReplyDelete