admin 管理员组

文章数量: 887021


2024年1月22日发(作者:数据库数据恢复收费)

linux screen 的基本使用

Screen,一个可以在多个进程之间多路复用一个物理终端的窗口管理器,作者(jawidx)根据自己使用过程中的常用操作及常见问题进行总结。

基本使用1

创建,

1. screen命令,创建一个执行shell的全屏窗口。键入exit退出自动切换到前一个窗口。

2. screen命令后跟你要执行的程序,如screen vi test.c,退出vi将退出该窗口/会话。

3. 在screen会话中创建新的窗口。在当前screen窗口中键入C-a c(Ctrl+a,之后再按c键)。2

选项,

-r 连接会话

-d 断开会话

-t 会话title

-S 命名会话(screen -ls会看到)

-wipe 清除该死掉会话

更多选项请看screen --help3

实例,

可以不中断screen窗口中程序的运行而暂时断开(detach)screen会话,并在随后时间重新连接(attach)该会话,重新控制各窗口中运行的程序。

[jawidx@fedev n-5]$ screen -S screenname //指定窗口名称

[jawidx@fedev ~]$ 在screen窗口键入C-a d中断(C-a k会杀掉screen会话)

[jawidx@fedev n-5]$ screen -ls

There are screens on:

(Attached)

(Detached)

(Detached)

(Detached)

(Detached)

name (Attached)

6 Sockets in /tmp/uscreens/S-jawidx.

[jawidx@fedev n-5]$ screen -r screenname //可用8987代替会话名,对于Attached的会话,需要先screen -d之后才能screen -r。

[jawidx@fedev ~]$ //继续刚才的工作

键绑定1

因为键盘上键入的信息是直接发送给当前screen窗口,默认情况下,screen窗口管理器接收以C-a开始的命令。这种命令形式在screen中叫做键绑定(key

binding),C-a叫做命令字符(command character)。可以通过C-a ?来查看所有的键绑定。Screen也允许你使用-e选项设置自己的命令字符和转义字符,其格式为:-exy x为命令字符,y为转义命令字符的字符。

常用的键绑定有:

C-c a,在当前screen窗口中键入后,screen 在该会话内生成一个新的窗口并切换到该窗口。

C-a ?显示所有键绑定信息

C-a w显示所有窗口列表

C-a C-a切换到之前显示的窗口

C-a c创建一个新的运行shell的窗口并切换到该窗口

C-a n切换到下一个窗口

C-a p切换到前一个窗口(与C-a n相对)

C-a 0..9切换到窗口0..9

C-a a发送 C-a到当前窗口

C-a d暂时断开(detach)当前screen会话,但不中断screen窗口中程序的运行

C-a k杀掉当前窗口

C-a [进入拷贝/回滚模式

C-a A给窗口起名字

C-a "查看

高级1

共享Screen会话,

打开一个连接,screen -S sharing -t one

打开另一个连接,screen -x -r sharing -p one

在同一screen中的用户,将会看现相同的输入或显示任何。2

锁定会话,

C-a s 锁定会话,虽然屏幕上看不到反应,但输入都会被Screen中的进程接收到。

C-a q 可以解锁一个会话。

C-a x 锁定会话,会话需要输入Screen所属用户密码才能访问。3

分屏,

C-a S 水平分屏

C-a | 垂直分屏,低版本不支持

C-a 在各个区块间切换

C-a X 关闭当前焦点所在的屏幕区块(并不会真的关闭)

C-a Q 关闭除当前区块之外其他的所有区4

C/P模式

C-a 或者C-a [可以进入copy/paste模式,

c/p模式下有很多类似vi的操作,譬如使用/进行搜索,使用y快速标记一行,使用w快速标记一个单词等。

一般情况下,按空格设置一个开头标记,结尾位置按空格设置第二个标记,两个标记之间的部分储存在c/p的buffer中,并退出c/p模式。在正常模式下,可以使用C-a ]将储存在buffer中的内容粘贴到当前窗口。5

配置,

Screen提供了丰富强大的定制功能,可以在Screen的默认两级配置文件/etc/screenrc和$HOME/.screenrc中指定

注意事项

如果机器没有安装Screen,可从GNU screen的官方网站下载

曙光集群PBS基本使用

PBS命令分为管理员命令和普通用户命令。在此只介绍普通用户的命令,普通用户命令可以分为提交作业、查看、杀掉作业和节点资源查看四类。

目录

[隐藏]

1 提交作业

2 查看作业

3 删除作业

4 节点资源查看

5 PBS使用举例

提交作业

在PBS系统中,用户使用qsub命令提交用户程序。用户运行程序的命令及PBS环境变量设置组成PBS作业脚本,提交格式如下:

注释,以―#‖开头

PBS指令,以―#PBS‖开头

以下为提交一个blastn任务的作业脚本,该作业名称为blast,申请使用了一个计算节点、并在该节点上申请了10个cpu核,作业最大运行时间为7200小时,作业所在的队列为batch。

#PBS -N blast

#PBS -l nodes=1:ppn=10

#PBS –l walltime=7200:00:00

#PBS -q batch

#PBS -V

cd $PBS_O_WORKDIR

time blastn -query ./ZS97_ -out ZS97_cds

-db ./MH63_cds -outfmt 6 -evalue 1e-5 -num_threads 10

该脚本每行解释如下:

-N 指定作业的名称,例如:

#PBS -N blast

-l 指定作业申请使用的系统资源,包括CPU资源、内存、运行时间,例如:

#PBS –l nodes=1:ppn=10

#PBS –l mem=10G

#PBS –l walltime=7200:00:00

注意这三类资源分三行来写,不可写在一行。

另外我们还可以指定作业提交的节点

#PBS –l nodes=node20:ppn=10

-q 指定作业所在的队列,本集群划分了6个队列,用户只能在自己所对应的队列中提交任务,例如:

#PBS –q batch

-V 指定qsub命令的所有的环境变量都传递到批处理作业中

$PBS_O_WORKDIR变量是PBS的系统变量,表示作业脚本所在的目录

最后一行为用户的程序命令

作业运行完成后会产生文件名为:作业名.e作业ID和作业名.o作业ID的两个文件,表示作业运行过程中产生的错误输出和标准输出,例如blast.e179,blast.o179。

在提交作业时,可根据算例规模的大小合理估算所需的walltime和Mem,并将其写进作业脚本里,这样有助于更快、更有效地分配资源。

查看作业

使用qstat命令查看作业状态。

qstat还有一些可选参数,

-q

-B

-Q

列出系统队列信息

列出PBS服务器的相关信息

列出队列的一些限制信息

-an

-r

列出队列中的所有作业及其分配的节点

列出正在运行的作业

列出指定作业的信息

列出指定队列的所有信息

-f jobid

-Qf queue

qstat输出的信息中我们比较关心的是S那一列所对应的信息,表示作业所处的状态,各个字母所代表的意思如下(其中红色标记的为常见的作业状态)。

B 只用于任务向量,表示任务向量已经开始执行

E 任务在运行后退出,这种情况一般是作业有问题,需要修改后重新提交

H 任务被服务器或用户或者管理员阻塞

Q 任务正在排队中,等待被调度运行

R 任务正在运行

C 任务已完成

S 任务被服务器挂起,由于一个更高优先级的任务需要当前任务的资源

T 任务被转移到其它执行节点了

U 由于服务器繁忙,任务被挂起

W 任务在等待它所请求的执行时间的到来(qsub -a)

X 只用于子任务,表示子任务完成

在本系统中,用户只能查看到自己的作业状态。

删除作业

如果用户要在作业提交后杀掉自己的作业,可以使用qdel命令,用法为qdel 作业ID,例如 qdel 197 删除作业后用qstat命令查看,作业处于C状态。非root用户只能查看、删除自己提交的作业。

节点资源查看

使用pestat命令查看集群各节点资源使用状况,例如

节点状态:

Excl 所有CPU资源已被占用;

Busy CPU已接近满负荷运行;

free 全部或部分CPU空闲;

offl 管理员手动指定离线状态;

此外,还可以使用另外一个命令pnodes来查看每个节点被占用的cpu核心数,用户可以根据剩余cpu资源合理地指定自己作业中使用的cpu核心数,以免作业处于长期等待状态。该命令有个缺点,就是运行时间比较长,大概要3s才出结果,其原因是这套系统节点数太多,命令执行时间太长。

PBS使用举例

PBS作业管理系统是个比较复杂的作业系统,这里只是给出了一些基本的用法,需要了解更多用法的用户可以自己查阅相关资料。更详细的使用见PBS使用,PBS安装使用

PBS常用命令

pbsnodes -o cu01 使cu01节点离线,不参与PBS作业分配

pbsnodes -c cu01 使cu01上线,参与到PBS的作业分配中

qstat -r 展示比较详细的作业状态

qstat -Q 所有作业的排队状态

qstat -u username 某个用户的作业

qstat -n 列出作业使用的节点和cpu核心

qstat -f 查看作业的详细信息

checkjobs jobid 可查看作业信息,包括申请、分配的计算资源

qdel -p 强制删除作业

qhold jobid 挂起作业

qrls jobid 取消挂起

tracejob jobid 追踪作业具体信息

printjob 显示指定作业脚本中的作业信息

canceljob:取消已存在的作业

checkjob:显示作业状态、资源需求、环境、限制、信任、历史、已分配资源和资源利用等

nqs2pbs:将 nqs 作业脚本转换为 pbs 作业脚本

pbsnodes:显示节点信息

printjob:显示指定作业脚本中的作业信息

qdel:取消指定的作业

qhold:挂起一个作业

qmove:将一个作业从一个队列移到另一个队列中

qnodes:pbsnodes 的别名,显示节点信息

qorder:交换两个作业的排队顺序

qrls:将被挂起的作业送入准备运行的队列中

qselect:显示符合条件的作业的作业号

qstat:显示队列、服务节点和作业的信息

qsub:提交作业

showbf:显示有特殊资源需求的资源的可用性

showq:显示已激活和空闲的作业的优先级细节

showstart:显示空闲作业的估计开始时间

tracejob:追踪作业信息

若不希望某节点能提交作业,可以用pbsnodes –o ―节点名‖,使其无法提交作业。

后台提交作业qsub

语法

qsub [-a date_time] [-A account_string] [-e path] [-h] [-I] [-j join] [-k keep] [-l resource_list]

[-m mail_options] [-n Node_allocation_Method [-L v1,[v2,[v3,[v4]]]]] [-M user_list] [-N name]

[-o path] [-p priority] [-q pool] [-r y|n] [-u user_list] [-v variable_list] [-V] [script]

参数

script参数被省略时,该命令可以从标准输入获得脚本文件名。

-a 时间。格式为[[[[CC]YY]MM]DD]hhmm[.SS]。CC表示世纪,YY表示年(后两位数字),MM表示月(两位数字),DD表示天(两位数字),hh表示小时(两位数字),mm表示分(两位数字),SS表示秒(两位数字)。如果DD指定的是未来日子,而未指定MM,则MM缺省值为当前月,否则,MM的缺省值为下个月。如果hhmm指定的未来时间,而未指定DD,则DD的缺省值为当天,否则,DD的缺省值为明天。如果提交作业时使用该选项,当指定时间还没到时,作业状态显示为”W”。

-e 指定错误输出文件名,格式为[hostname:]path_home。Hostname是返回错误输出文件的主机名,path_home是错误输出文件的绝对路径,如果指定了相对路径,则相对用户的主目录。不使用该选项时,缺省值是在用户主目录下,以“作业名.e作业ID”命名的文件

-o 指定输出文件名,格式为[hostname:]path_home。缺省值是在用户主目录下,以“作业名.e作业ID”命名的文件

-h 指定在提交作业时,设置用户级‟u‟挂起。如果不指定,则设置挂起类型为‟n‟,即不挂起。

-I 指定作业以交互方式运行。

-j 指定合并错误输出和实际输出。如果指定‟oe‟,则合并到标准输出文件中;如果指定‟eo‟,则合并到标准错误输出文件中.

-k 指定执行主机是否保留错误输出和实际输出。如果指定„o‟,则仅保留标准输出;如果指定‟e‟,则仅保留标准错误输出;如果指定‟oe‟或„eo‟,则保留标准输出和标准错误输出;如果指定‟n‟,则不保留任何输出。

-l 指定作业所需要的资源,设定对可消耗资源的限制。如果不设置,则无限制。例如:

resource_name[=[value]][,resource_name[=[value]],…]

LINUX系统可以设置的资源有cput, file, pcput, pmem, pvmem, vmem, walltime, arch,

nodes, ncpus等;

Cput指作业的所有进程使用cpu最长时间;

File指作业可以建立单个文件大小的最大限制;

Pcput指作业的单个进程可以使用CPU的最长时间;

vmem指作业可以使用的物理内存的最大值;

Pmem指作业的单个进程可以使用的物理内存的最大值;

Pvmem指作业的单个进程可以使用的虚拟内存的最大值;

walltime指作业处于运行状态的最长时间;

arch 指定系统管理员所定义的系统结构类型;

host指定作业运行的主机名;

nodes指定作业独占使用的结点数目和属性,使用―+‖可以连接多种结点的定义。

结点的属性和主机名或数目之间通过“:”分隔。如果不指定结点数,则缺省为1。结点的属性包括ppn(每个结点上的进程数,缺省为1)和系统管理员设置的属性(如batch、bigmem)例如:请求12个结点,不管其属性

-l nodes=12

请求12个属性为batch的结点和14个属性为bigmem的结点

-l nodes=12:batch+14:bigmem

请求4个结点,每个结点上使用2个CPU

-l nodes=4:ppn=2

software 指作业要求的软件包

-m 定义何时给用户发送有关作业的邮件。可设定的选项有:

n 不发送邮件

a 当作业被批处理系统中断时,发送邮件

b 当作业开始执行时,发送邮件

e 当作业执行结束时,发送邮件

-M 指定发送有关作业信息的邮件用户列表。格式为user[@host][,user@[host],…]缺省值为提交作业的用户。

-N 指定作业的名字。缺省值为脚本的名字,如果没有指定脚本,则为STDIN。

-p 指定作业的优先级,优先级的范围是[-1024, +1023]。缺省值是没有优先级。

-q 指定作业的目的地(结点池),目的地可有三种格式:

pool

@server

pool@server

-r y|n 指定作业是否可重新运行。指定„y‟时,作业可以重新运行;指定‟n‟时,作业不能重新运行。缺省值为‟n‟。

-z :指明qsub 命令提交作业后,不在终端显示作业号。

-v 格式为variable1,variable2,…或variable1=value,variable2=value,…这些变量和其值可以传递到作业中。

-V 指定qsub命令的所有的环境变量都传递到批处理作业中。

作用

以脚本文件的形式向批处理服务器提交作业。

举例

把脚本文件提交到结点池dque中运行。

$ qsub

e

$ qstat

Job id Name User TimeUse S Pool

e cpi zhangxq 0:00:00 R dque

把脚本作业提交到结点池long中运行,并且当作业开始运行时,给用户发送电子邮件。

$qsub -P long -m b $qstat

Job id Name User TimeUse S Pool

e cpi zhangxq 0 R long

使用15个结点运行,运行时间不能大于2小时,作业占用的内存能大于15mb

$qsub –l nodes=15,walltime=2:00:00,mem=15mb

综合考虑CPU、内存、缓冲区、硬盘等因素的使用情况,设置其权值分别为5, 4, 3, 2.

$qsub –l nodes=5 -n syn –L 5, 4, 3, 2

使用-I和–l选项在指定的结点上交互式运行作业

$ qsub –I -l nodes=c0101

运行该命令后,系统将自动切换到c0101的虚拟终端,所有的标准输入和标准输出和标准错误输出均都显示在该终端上. 在系统出现”waiting to jobid to start”时,用户若按^C键,即可中断该交互作业.当该交互作业已经启动后,用户除了交互式运行作业外,还可进行以下操作:

~. 该命令将使qsub退出,且终止作业。

~^Z挂起qsub,作业依然保持运行状态,无任何输入输出。用户可以在本地shell上提交命令。

~^Y部分挂起qsub,因为还可以给作业发送输入,而且接受作业的输出的同时,还可以在本地shell提交命令。

查看状态qstat

语法

qstat [-f][-W site_specific] [ |

]

qstat -Q [-f][-W site_specific] []

qstat -B [-f] [-W site_specific] []

参数

-q 显示已经配置的所有结点池状态信息

-a 显示已经提交的作业状态信息

-f 显示指定作业的所有状态信息

-B 显示服务器的状态

-n 显示作业分配的节点

destination可以为pool,@server,pool@server

作用

查看作业、结点池和批处理服务器的状态。命令格式一可以输出所指定作业ID或者结点池中所有作业的状态,命令格式二可以输出每个结点池的状态信息,命令格式三可以输出服务器的状态。

举例

显示已经配置的所有结点池状态信息。

qstat -q

显示已经提交的作业状态信息

qstat -a

显示指定作业的所有状态信息

$ qstat -f e

mtime = Sun Apr 28 19:54:48 2002

Output_Path = console:/home/zhangxq/cpi.o23

Priority = 0

qtime = Sun Apr 28 19:54:48 2002

Rerunable = True

Resource_ = 00:00:59

Resource_ = 2

Resource_ = 2:ppn=1

Variable_List = LJRS_O_HOME=/home/zhangxq,LJRS_O_LANG=en_US

……

显示服务器的状态

$qstat –B

Server Max Tot Que Run Hld Wat Trn Ext Status

console 0 0 0 0 0 0 0 0 Active

查询作业qselect

语法

qselect [-a [op]date_time] [-A account_string] [-h old_list] [-l resource_list] [-N name] [-p

[op]priority] [-q destination] [-r y|n] [-s states] [-u user_list]

参数

op 表示某一个作业属性值和选项参数值之间的关系。如

.eq. (等于)

.ne. (不等于)

.ge. (大于或等于)

.gt. (大于)

.le. (小于)

其它参数含义见qsub命令。

作用

列出符合选项要求的作业ID。这些作业来自于单个服务器。如果没有任何选项,该命令则列出该用户被授权的服务器上的所有作业。对那些普通用户来说,该命令只显示该用户所提交的作业。

举例

查询用户所提交的作业

$ qsub -q long

e

$ qselect

e

e

查询指定结点池中的作业

$ qstat

Job id Name User TimeUse S Pool

e cpi zhangxq 0 Q dque

e cpi zhangxq 0 R long

$ qselect -P dque

e

查询指定主机上的作业

$ qstat

Job id Name User TimeUse S Pool

e cpi zhangxq 0 Q dque

e cpi zhangxq 0 R long

$ qselect -P @console

e

e

挂起作业qhold

语法

qhold [-h hold_list] job_identifier …

作用

挂起批处理作业。挂起有三种类型:普通用户级„u‟、管理员级(操作员级)„o‟、系统级„s‟,缺省值为不挂起„n‟。用户只能在用户级别挂起自己提交的作业,操作员可以在用户级和操作员级挂起任何作业,系统管理员可以在任何级别上挂起任何作业。

在执行该命令时,如果作业在运行结点池里排队,那么作业将直接被挂起;如果作业处于运行状态,为了中断作业的执行,必须采取其他办法。如果被挂起作业的主机系统支持一致点检查或者重新启动,则挂起正在运行作业将引发以下操作:首先检查作业的一致性,然后释放该作业所占用的资源,最后该作业位于执行结点池中,处于挂起状态;如果被挂起作业的主机系统不支持一致点检查或者重新启动,则仅设置指定的挂起作业类型,而实际上并不能挂起,除非调用qrerun命令重新运行该作业时,该挂起请求才生效。

举例

使用普通用户身份挂起作业

$ qhold -h u e $ qstat

Job id Name User TimeUse S Pool

e cpi zhangxq 0 H dque

以操作员身份挂起作业

$ qhold -h o 25

qhold: Unauthorized Request e

$ su root

$ qhold -h o 25

$ qstat

Job id Name User TimeUse S Pool

e cpi zhangxq 0 H dque

释放作业qrls

语法

qrls [-h hold_list] job_identifier ...

作用

释放被挂起的批处理作业。由于作业的挂起有三种类型:USER、OPERATOR和SYSTEM。所以,要释放不同类型的作业挂起,用户就必须具有相应的权限。缺省为USER级

举例

释放在普通用户和操作员级被挂起的作业。

$ qstat

Job id Name User TimeUse S Pool

e cpi zhangxq 0 H dque

$ qrls -h uo 25

$ qstat

Job id Name User TimeUse S Pool

e cpi zhangxq 0 Q dque

重新运行作业qrerun

语法

qrerun job_identifier ...

作用

重新运行所指定的作业。

举例

如果作业允许别重新执行(缺省值是可以重新运行)。ROOT用户运行该命令,可以终止本次运行,把该作业放入其原来所在的结点池中,重新运行。

$ qrerun 27

qrerun: Unauthorized Request e

$ su – root

$ qstat

Job id Name User TimeUse S Pool

e cpi zhangxq 0 Q dque

e cpi zhangxq 0 R dque

$ qrerun 27

$ qstat

Job id Name User TimeUse S Pool

e cpi zhangxq 0 Q dque

e cpi zhangxq 0 R dque

更改作业属性qalter

语法

qalter [-a date_time] [-A account_string] [-e path] [-h hold_list] [-j join] [-k keep] [-l

resource_list] [-m mail_options] [-M user_list] [-N name] [-o path] [-p priority] [-r c] [-u

user_list]

参数

各参数的含义见qsub命令。

作用

更改批处理作业的属性。主要修改所指定作业ID的相关属性(选项表中所列出的属性)。

举例

更改批处理作业的运行时间属性。

$ qalter -a e

更改给用户发送邮件的时间为作业中止和运行结束时

$ qalter –m ae e

删除作业qdel

语法

qdel [-W delay|force] job_identifier ...

参数

-W 当指定delay 时,表示在删除作业前需要等待的时间(秒)

当指定force时,强制删除该作业。

作用

删除批处理作业。按照命令行中所指定的作业ID的顺序来删除作业。

举例:

$ qstat

Job id Name User TimeUse S Pool

e cpi zhangxq 0 Q long

$ qdel 22

给作业发送消息qmsg

语法

qmsg [-E] [-O] message_string job_identifier ...

参数

-E 将消息串写入错误输出文件

-O将消息串写入输出文件

作用

给批处理作业发送消息。该命令通过给作业的所有者(批处理服务器)发送消息,从而把消息写入作业的输出文件,也就是说,该命令并不是直接把消息写入作业的输出文件。

举例

给正在运行的作业发送消息,该消息被写入所指定作业的错误输出文件中。

$ qstat

Job id Name User TimeUse S Pool

e cpi zhangxq 0 Q dque

e cpi zhangxq 0 R dque

$ qmsg ―The job is running‖ 26

$ more cpi.e26

The job is running

在结点池之间移动作业qmove

语法

qmove destination job_identifier ...

参数

destination可以为结点池名

作用

把批处理作业移到其他结点池中去运行。即把作业从所在的结点池中删除,并放在其他结点池中。

举例

$ qstat

Job id Name User TimeUse S Pool

e cpi zhangxq 0 Q dque

$ qmove long 22

$ qstat

Job id Name User TimeUse S Pool

e cpi zhangxq 0 Q long

给作业发送信号qsig

语法

qsig [-s signal] job_identifier ...

参数

参数signal可以为信号名称,如SIGKILL,KILL,SIGNULL或者无符号整数,如9、0。

作用

给正在运行的批处理作业发送信号。如果不指定-S选项,则发送“SIGTERM”信号。如果有下列原因之一,如用户无权给作业发送信号、作业未处于运行状态和该信号请求对作业所运行的系统无效,则拒绝执行该命令请求。

查看和管理结点pbsnodes

语法

pbsnodes [- {c|o|r}] [nodename …] pbsnodes - {a|l }]

参数

-a 列出所有结点及其属性,属性包括―state‖和―properties‖

-c 清除结点列表中的―offline‖或―down‖状态设置,使结点可以被分配给作业。

-l 以行的方式列出被标记的结点的状态 -o 将指定结点的状态标记为―offline‖。这将帮助管理员暂时停止某些结点的服务。

-r 清除指定结点的―offline‖状态

作用

该命令可以标记结点的状态为“offline”、“down”或“free”,也可以帮助用户查看结点信息。除了”-a” 和“-l”选项外,使用其他选项需要拥有操作员和管理员权限。

举例

查看所有结点信息

pbsnodes -a

将结点标记为“offline”状态

pbsnodes –o c0108

清除结点的“offline”状态设置

pbsnodes –c c0108 或 pbsnodes –r c0108

查看所有计算结点的状态shownodes

语法

shownodes [-h]

作用

按照结点池分类显示各结点池中结点的状态,结点状态以不同颜色显示。并在结点名后以数字代表可用CPU数和总共CPU数。例如c0101-2/2, 表示c0101结点可用2CPU总共2CPU,c0102-1/2表示C0102可用1CPU总共2CPU。

举例

$shownodes –h

checkjob查看作业详细信息

语法

checkjob Usage: checkjob [FLAGS]

--about

--configfile=

--format=

--help

--host=

--keyfile=

--loglevel=

--port=

--version

-A // AVP Mode

-l

-n

-r

-v // VERBOSE

举例

该命令可以查看作业的一些详细信息包括作业提交时间、开始时间等等,例如checkjob 2261

checking job 2261

State: Running

Creds: user:hliu group:Gene class:big qos:DEFAULT

WallTime: 3:05:59:28 of INFINITY

SubmitTime: Tue Apr 7 15:51:56

(Time Queued Total: 00:00:02 Eligible: 00:00:02)

StartTime: Tue Apr 7 15:51:58

Total Tasks: 10

Req[0] TaskCount: 10 Partition: DEFAULT

Network: [NONE] Memory >= 0 Disk >= 0 Swap >= 0

Opsys: [NONE] Arch: [NONE] Features: [NONE]

Allocated Nodes:

[r:10]

IWD: [NONE] Executable: [NONE]

Bypass: 0 StartCount: 1

PartitionMask: [ALL]

Flags: RESTARTABLE

Reservation '2261' (-3:05:59:30 -> INFINITY Duration: INFINITY)

PE: 10.00 StartPriority: 1

作业提交方式

用户通过qsub命令来向系统提交任务,有两种方式提交:脚本方式和命令行方式。(一般情况下,不允许root用户使用qsub命令提交作业)。下面先讲一下用这两种方式提交作业的过程。

脚本方式提交

用户将需要执行的程序或命令写入脚本中,再加入一些必要或者可选的语句,就可以通脚本方式提交。脚本提交比较方便,用户可以用最简单的文字编辑器(例如 vi)编写一个脚本,然后使用 qsub 命令提交该脚本,pbs 会按照脚本内容执行相应的任务。脚本提交的不足之处就是需要用户执行任务前编写脚本。

脚本方式提交任务的一般格式为:qsub [script_name],script_name 是任务脚本的名称。

pbs 任务脚本包括三部分:

shell 说明语句:用来说明用户使用的是哪种 shell,例如 #!/bin/sh说明用户需要使用

Bourne shell,如果用户没有指定,则默认为 Bourne shell

pbs 指示语句:pbs 指示语句是用户用来请求任务运行时所需的资源或设置任务的一些属性的。以#PBS开头,如#PBS –N taskname 是用来设置任务名称的。pbs 指示语句是可选的,用户可以不用关心它如何写,系统会自动设置。

pbs 指示句的一个主要作用是请求任务执行时所需要的系统资源,如 cpu 数目,存储容量,运行时间,运行优先级等等。以脚本方式提交的任务的资源请求是通过 pbs 指示语句,一般格式为 #PBS –l [选项=] [选项对应的值],如#PBS –l ncpus=5 表示请求 5

个cpu为之服务。系统资源如下所示:

arch 所需要的系统结构,只用在资源块中 -l arch=linux

cput 任务的所有进程拥有的最大 cpu 执行时间 -l cput=1:00:00

file 任务能够创建的文件的大小 -l file=45mb

host 指定执行主机的名称 -l nodes=X:host 分配 X个主机名称中含有 host的执行节点

mem 任务的所有进程能够分配到的最大物理内存数 -l mem=100mb

ncpus 请求的 cpu数 -l ncup=5

nice 任务运行时的 nice 优先级值 -l nice=3

pcput 任务的任何一个进程拥有的最大 cpu 执行时间 -l pcput=1:00:00

pmem 任务的任何一个进程能够分配到的最大物理内存数 -l pmem=45mb

pvmem 任务的任何一个进程能够使用的虚拟内存的最大数 -l pvmem=100mb

vmem 任务的所有并发进程能够使用的最大虚存数 -l pvmem=100mb

walltime 任务可以处于运行态的最大 wall-clock 时间 -l walltime=1:00:00

custom resources 用户自定义资源

最常用的几种资源是:walltime, ncpus, mem, host。其它可以不用太关心。

资源请求的两种方式:

资源块方式:资源块是将任务所需的资源作为一个整体,这个整体中说明了所需要的各种资源的数目。其格式为:-l select=[N:]chunk[+[N:]chunk…],如qsub –l

select=2:ncpus=3:mem=4gb:arch=linux ,select=2表示需要2个这样的资源块,一个资源块包括3个cpu,4gb的内存,系统结构要求是linux,即总共需要6个cpu,8gb的内存。再如:-l select=2:ncpus=1:mem=10GB+3:ncpus=2:mem=8GB:arch=solaris注意中间的+号,是两个资源块的分隔符

请求全任务(job-wide)资源:格式为 –l keyword=value[,keyword=value ...]如:qsub -l

ncpus=4,mem=123mb,arch=linux

任务(程序或命令):可以是用户程序(如C程序),也可以是系统命令。

下面是一个完整的任务脚本例子,脚本名为 mytask:

#!/bin/sh //指明所用的 shell

#PBS –N mytask //设置任务名称

#PBS -l walltime=1:00:00 //请求任务执行时间

#PBS -l select=ncpus=4:mem=400mb //请求任务执行所需资源

#PBS -j oe //设置相关属性(文件合并)

date //系统命令(打印日期时间)

.my_application //所要执行的任务(当前目录名为

my_application的任务)

date // 系统命令

第 1 行说明所用的 shell;第 2 至5 行是 pbs 指示语句,设置了任务的一些属性,并请求了资源;第 6 至8行是要执行的命令及任务。

编写完脚本后,使用 qsub 命令提交脚本,在 shell下输入:

qsub mytask

后敲回车。

系统会输出一个任务标识符:name,如 01。sequence-number是任务编号,后面需要用这个号查看任务的执行状态,ervername是 pbs

server的名称。

命令行方式提交

命令行方式提交不用写脚本,用户可以直接从命令行输入。输入的内容基本上和在脚本中输入的相同。其基本格式如下:

qsub //输入qsub命令后回车

[directives] //pbs指示语句(以#PBS为前缀)

[tasks] //任务或命令

ctrl-D //结束输入,提交任务

对于上面用脚本方式提交的任务,用命令行方式提交的格式如下:

qsub

#PBS –N mytask

#PBS –l walltime=1:00:00

#PBS –l select=ncpus=4:mem=400mb

#PBS -j oe

date /t

./my_application

date /t

注:以命令行方式提交任务时,这些命令选项都要以 pbs 指示语句的格式给出,即选项之前要加前缀#PBS。任务提交后,用户如果要知道任务的当前运行状态,可以通过 qstat 命令查询。qstat 命令的常用选项有:无选项:当 qstat 命令不带任何选项时,以默认方式显示任务信息,例如

[soofree@node32]$ qstat

Job id Name User Time Use S

Queue

—————- —————- —————- ———— ——

32 test soofree 0 R

small

其中,Job id 是任务的标识符,Name 是任务名称,User是任务所有者,Time Use 是CPU使用时间,S 是任务当前状态(本例中 R表示正在运行),Queue表示任务所在队列。任务的状态如下:

* B 只用于任务向量,表示任务向量已经开始执行

* E 任务在运行后退出

* H 任务被服务器或用户或者管理员阻塞

* Q 任务正在排队中,等待被调度运行

* R 任务正在运行

* S 任务被服务器挂起,由于一个更高优先级的任务需要当前任务的资源

* T 任务被转移到其它执行节点了

* U 由于服务器繁忙,任务被挂起

* W 任务在等待它所请求的执行时间的到来(qsub -a)

* X 只用于子任务,表示子任务完成

再举一例,使用-a 选项指定任务开始执行时间:

[soofree@nod32]$ qsub -a 2102 test

32

[soofree@node32]$ qstat

Job id Name User Time Use S Queue

—————- —————- —————- ———– — ——–

01 test soofree 0 W default


本文标签: 作业 任务 命令 用户 运行