一不小心投了巨多任务,或者投递的资源不合理时,想批量杀掉这些任务。
[linux] 大批量删除任务_sed

kill的方法就不说了,我这里用qdel的方法。
用了这么一条命令:

 qstat |sed '1,2d' |awk -F' ' '{print $1}' |sed ':x;N;s/\n/ /;b x'|cat

[linux] 大批量删除任务_sed_02

再用​​qdel​​​删除即可。这里还是用了两步,而且用​​sed​​​将换行符替换为空格很复杂的样子,不友好。
[linux] 大批量删除任务_微信公众号_03

其实可以直接用​​xargs​​简化:

qstat |sed '1,2d' |awk -F' ' '{print $1}' | xargs qdel

[linux] 大批量删除任务_微信公众号_04

也可根据用户或者运行状态有选择性地删除,如只删等待状态的任务而不删除运行中的任务。

qstat -u USERNAME | grep "qw" | cut -d" " -f1 | xargs qdel

[linux] 大批量删除任务_sed_05

同样,删除运行中的任务:

qstat -u USERNAME | grep "r" | cut -d" " -f1 | xargs qdel

​cut​​​和​​awk​​均可

其实,如果是删除用户全部的任务,使用​​qdel -u name​​最简洁。


作者:​​Bioinfarmer​​​,若要及时了解动态信息,请关注同名微信公众号:Bioinfarmer。