如何投递任务、监控任务和终止任务;(user)

现有的新服务器上运行程序一定要进行任务投递,将程序交由任务管理系统统一调度

现有的新服务器上运行程序一定要进行任务投递,将程序交由任务管理系统统一调度

现有的新服务器上运行程序一定要进行任务投递,将程序交由任务管理系统统一调度

切不可在登录节点下运行大程序

Sun网格引擎(Sun Grid ,SGE)是一种来自于SUN Microsystem的分布式资源管理和调度系统,它用来在基于UNIX的计算环境中优化软件和硬件资源的使用。

SGE怎样工作:
  1. 接受用户投放的任务
  2. 在任务运行以前,将任务放到一个存储区域
  3. 发送任务到一个执行设备,并监控任务的运行
  4. 运行结束写回结果并记录运行日志

1.投递任务

Step1:

编写要投递的任务脚本(XXX.sh)

因为SGE默认使用的是tcsh,而XXX.sh使用的是bash,所以应该在投递的时候指明命令解释器,最好在XXX.sh开头加上#!/bin/bash #$-S /bin/bash这两行,如下方任务脚本(do_fastqc.sh)

#!/bin/bash
#$ -S /bin/bash
samples=(191027-11_FDHG192029915-1a 191027-3_FDHG192029912-1a 191027-6_FDHG192029913-1a 191027-7_FDHG192029914-1a)
for sample in ${samples[@]}
do
/XXX/FastQC/fastqc -t 20 -o /XXX/fastqc_wd2 /XXX/cleanData/${sample}/${sample}_1.clean.fq.gz
/XXX/FastQC/fastqc -t 20 -o /XXX/fastqc_wd2 /XXX/cleanData/${sample}/${sample}_2.clean.fq.gz
done

保存脚本文件

Step2:

编写投递任务脚本(XXX_qsub.sh)

使用qsub命令进行投递

  1. 投递任务到指定队列all.q
    qsub -cwd -S /bin/bash -l vf=*G -q all.q .sh
    -cwd 表示在当前路径下投递,sge的日志会输出到当前路径。
    -l vf=
    G 任务的预估内存,内存估计的值应稍微大于真实的内存,内存预估偏小可能会导致节点跑挂。
    -q 指定要投递到的队列,如果不指定的话,SGE会在用户可使用的队列中选择一个满足要求的队列。

一般使用的投递命令

qsub -cwd -S /bin/bash -l vf=30g -V do_fastqc.sh

do_fastqc.sh为上述的任务脚本


qsub常用命令

这里举个例子
qsub –cwd -l h=compute-1-1, h_vmem=5G,p=4 -q all.q work.sh

其中:
-cwd 在当前工作目录;
-l 资源申请/限制,用逗号隔开
-q 申请队列
关于资源限制域,可以通过如下指令查看:qconf -sc
下面列举一些常见的关键字:


qconf

2.查询任务

qstat -u username 查看某个用户的任务

qstat -u * 查看所有用户的任务

qstat -j jobID 查看某个任务的详细信息

qstat -f 查看用户自己在每个节点的任务情况

qstat -q all.q -u * 查看某个队列下所有任务

qstat -q all.q@node1 -u * 查看某个队列的某一节点下所有任务

一般使用qstat就可以了,查询结果如下:



这里的job-ID就是sge给你的任务分配的ID
state是当前任务的状态,有如下的分类:
qw 表示等待状态
Eqw 投递任务出错
r 表示任务正在运行
dr 节点挂了之后,删除任务就会出现这个状态,只有节点重启之后,任务才会消失

3.删除任务(终止任务)

qdel job-ID 删除job,如删除上述任务:qdel 22

qdel -u usrname 删除用户的所有任务

4.查看任务运行过程中日志

在任务提交后运行后,任务脚本文件夹下回生成XXX.sh.eX和XXX.sh.oX 分别是任务的日志和终端显现的信息,可通过cat XXX.sh.eX 来查看任务运行错误信息(调试)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。