【问题标题】:Use qdel to delete all my jobs at once, not one at a time使用 qdel 一次删除我的所有作业,而不是一次删除一个
【发布时间】:2015-05-05 15:20:24
【问题描述】:

这是一个相当简单的问题,但我一直无法找到答案。

我有大量作业在集群中运行 (>20),我想将它们全部删除并重新开始。

根据this site 我应该可以这样做:

qdel -u netid

摆脱它们,但在我的情况下返回:

qdel: invalid option -- 'u'
usage: qdel [{ -a | -c | -p | -t | -W delay | -m message}] [<JOBID>[<JOBID>]|'all'|'ALL']...
   -a -c, -m, -p, -t, and -W are mutually exclusive

这显然表明该命令不起作用。

只是为了检查,我做了:

qstat -u <username>

我确实得到了一份我所有工作的清单,但是:

qdel -u <username>

也失败了。

【问题讨论】:

  • 这是 NQS 排队系统吗?
  • @Sigismondo 抱歉,我不确定这意味着什么。我对集群管理知之甚少(我不知道),我只是使用它。
  • 为什么qdel -u &lt;username&gt; 会失败?

标签: ssh cluster-computing jobs


【解决方案1】:

基于 Gabriel 的回答:

qselect -u <username> | xargs qdel

qselect -u <username> -s <state> | xargs qdel

&lt;state&gt; 将是 R 仅用于运行作业。

qselect 将允许您根据其他条件选择作业,例如请求的资源 (-l)、目标队列 (-q) ...

qdel -u <username>

仅适用于 SGE

【讨论】:

  • 为什么qdel -u &lt;username&gt; 会失败?
  • 第二种解决方案对我不起作用...
【解决方案2】:

对于 UGE:

qstat -u | gawk '{打印 $1}' | xargs qdel

【讨论】:

    【解决方案3】:

    old supercluster.org thread 中找到答案:

    qselect -u <username> | xargs qdel
    

    完美运行。

    【讨论】:

    • 有没有办法跳过已完成的工作?此解决方案确实有效,但会输出 qdel 试图杀死已完成作业的大部分错误..
    • 嗯,我真的不知道,对不起。
    • 谢谢。只是对于 UGE,该选项是大写的:qselect -U
    • 链接重新上线
    • 将 $USER 用于
    【解决方案4】:

    试试

    $ qdel {id1..id2}
    

    例如:

    $ qdel {1148613..1148650}
    

    【讨论】:

      【解决方案5】:
      qstat | cut -d. -f1 | sed "s;   \(.*\) 0;qdel \1;" | bash
      

      sed 的力量。

      【讨论】:

        【解决方案6】:

        有时一个简单的grep/cut 也可以提供帮助: qstat | grep $USER | cut -d. -f1 | xargs qdel

        这样我们还可以grep 为工作提供特定关键字并删除它们。

        HTH

        【讨论】:

        • 我一直使用它,因为它为其他 grep 搜索增加了很多灵活性。
        • 为什么qdel -u &lt;username&gt; 会失败?
        • 您可能需要根据qstat 输出的外观调整分隔符和字段编号。例如,对我来说,它以两个空格字符开头,所以我使用qstat | grep $USER | cut -d' ' -f3 | xargs qdel
        【解决方案7】:

        只需使用以下命令:

        qdel all           
        

        它将取消在集群上运行的所有作业。

        【讨论】:

          【解决方案8】:
          # Delete all jobs owned by the current user.
          # 
          # Command breakdown:
          # ------------------
          #
          # qselect
          # -u selects all jobs that belong to the current user
          # -s EHQRTW selects all job states except for Complete
          #
          # xargs
          # --no-run-if-empty Do not run qdel if the result set is empty
          #                   to avoid triggering a usage error.
          #
          # qdel
          # -a delete jobs asynchronously
          #
          # The backslashes are a trick to avoid matching any shell aliases.
          
          \qselect -u $(whoami) -s EHQRTW | \xargs --no-run-if-empty \qdel -a
          

          【讨论】:

            【解决方案9】:

            另一种可能性是做qdel all。它会删除所有人的所有工作。当您无权访问其他人的工作时,它只会删除您的工作。

            这不是最漂亮的解决方案,但肯定是最短的!

            【讨论】:

            • 对我不起作用。 The job all of user(s) &lt;user&gt; does not exist.
            • 为我工作。即使系统报告“未经授权”,它也会按照 guhur 的说明执行操作并仅删除您的工作。
            猜你喜欢
            • 2012-09-18
            • 2011-09-12
            • 1970-01-01
            • 1970-01-01
            • 2015-05-13
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多