runshell 集群和本地任务

runshell 是将 shell 脚本中每行命令作为独立任务投递到本地服务器、SGE集群或Slurm集群中运行的命令。runsge 命令功能与 runshell 完全一致,为早期版本的命令名。

参数說明

输入命令runshell --help可查看参数配置,各参数介绍如下:

参数

描述

-h/–help

打印帮助信息并退出

-v/–version

打印软件版本并退出

-j/–jobfile

指定的shell脚本文件,每行命令作为一个任务投递(必填,默认stdin)

-N/–jobname

任务名称,默认为jobfile的basename

-L/–logdir

各任务的日志输出文件夹

-g/–groups

指定N行为一个任务组,作为一个单独任务,默认1行

-n/–num

同时运行的最大任务数,默认全部(最大1000)

-s/–start

从第几行开始运行,默认第1行

-e/–end

运行到第几行,默认最后一行

-M/–mode

任务运行模式,可选 local, localhost, sge, slurm,默认自动检测

-w/–workdir

任务提交时的工作目录,默认为当前目录

-q/–queue

SGE/Slurm 集群队列名,多个用空白隔开

-c/–cpu

任务使用的cpu资源申请,默认1

-m/–memory

任务使用的内存资源申请,默认1G

–node

任务运行的集群节点,多个用空白隔开

–round-node

在所有指定节点间轮询分配任务

-r/–retry

任务运行失败后重新投递次数,默认0(不重投)

-R/–retry-sec

任务错误后重投的等待时间,单位秒,默认2

–max-check

每秒最大检查任务状态次数,默认5

–max-submit

每秒最大投递任务数,默认20

–max-queue-time

任务从提交到开始运行的最大等待时间(支持d/h/m/s格式)

–max-run-time

任务最大运行时间(支持d/h/m/s格式)

–max-wait-time

任务从提交开始的最大存活时间(支持d/h/m/s格式)

–max-timeout-retry

超时任务的重试次数,默认0

–init

所有任务开始前运行的命令(本地执行)

–callback

所有任务结束后运行的命令(本地执行)

–strict

严格模式,单个任务失败则终止所有任务并退出

-f/–force

强制重新提交已成功的任务

–quiet

静默模式,不输出日志

-d/–debug

程序日志级别debug,默认info

-l/–log

程序日志输出文件,默认屏幕输出

–config

指定配置文件路径

–show-config

打印当前配置并退出

shell任务格式

runshell批量投递任务,将shell脚本中的每一行命令作为一个任务并行投递到计算资源中。

shell脚本格式如下:

echo hello // -c 1 -m 1G --mode sge -q all.q
echo world
wait
echo end
  • 每一行命令作为一个任务投递,每个任务支持 // 后添加资源限定。

  • wait 关键字会阻塞当前任务投递过程,等待之前的所有任务运行完成后才投递后续行。

  • 需要注释的行可使用 #

行级任务资源限定

脚本中每行任务可通过 // 符号后添加参数选项来覆盖该行任务的配置:

参数

描述

-c/–cpu

该行任务申请的CPU资源

-m/–memory

该行任务申请的内存资源

-q/–queue

该行任务的SGE/Slurm队列

-N/–jobname

该行任务名称,不要以数字开头

–mode

该行任务运行方式:local/localhost/sge/slurm

–node

该行任务指定运行的节点

  • localhost 运行的任务不需要指定运行资源。

任务依赖关系

  • shell任务支持简单的任务依赖,通过 wait 关键字进行任务依赖限定。

  • --groups/-g 参数可将N行命令合并为一个任务组。

  • --num/-n 参数限定同时运行的最大任务数。

callback和init

  • --init--callback 支持在所有任务运行前/后执行指定命令。命令需要用引号引用。

  • initcallback 命令均强制 localhost 本地运行。

  • callback 可用于任务分析完成之后的结果汇总、回传或通知等场景。