运行和验证
操作步骤
- 使用PuTTY工具,以root用户登录主控主机。
- 执行以下命令添加执行主机。
qconf -as armnode4
- 执行以下命令查看默认主机组的名称。
qconf -shgrpl
@allhosts
- 执行以下命令修改主机组信息,将执行主机添加到主机组中。
- qconf -mhgrp @allhosts
- 按“i”进入编辑模式,修改以下内容。
group_name @allhosts hostlist armnode4
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 执行以下命令切换到非test用户。
su - test
- 执行以下命令在test用户下加载SGE环境变量。
source /path/to/SGE_ROOT/default/common/settings.sh
- 添加SGE环境变量到test用户的“.bashrc”中从而永久生效。
echo "source /path/to/SGE_ROOT/default/common/settings.sh" >> /path/test/.bashrc
- 执行以下命令创建一个样例执行脚本“run.sh”。
vi run.sh
按“i”进入编辑模式,添加以下内容。#!/bin/bash #$ -S /bin/bash nodeinfo=`hostname` echo "This is the SGE test from $nodeinfo" >> sge-test.log
按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 执行以下命令提交作业任务。
qsub -V -cwd -o stdout.txt -e stderr.txt run.sh
命令参数说明如表1所示。表1 qsub命令常用参数说明 参数
说明
-V
将当前shell中的环境变量输出到本次提交的任务中。
-cwd
在当前工作目录下运行程序。默认设置下,程序的运行目录是当前用户在其计算节点的家目录。
-o
将标准输出添加到指定文件尾部。默认输出文件名是$job_name.o$job_id。
-e
将标准错误输出添加到指定文件尾部。默认输出文件名是$job_name.e$job_id。
-q
指定投递的队列,若不指定,则会尝试寻找最小负荷且有权限的队列开始任务。
-S
指定运行run.sh中命令行的软件,默认是tcsh。推荐使用bash,设置该参数的值为/bin/bash即可,或者在run.sh文件首部添加一行#$ -S /bin/bash。若不设置为bash,则会在标准输出中给出警告信息:Warning: no access to tty (Bad file descriptor)。
-hold_jid
后接多个使用逗号分隔的job_id,表示只有在这些job运行完毕后,才开始运行此任务。
-N
设置任务名称。默认的job name为qsub的输入文件名。
-p
设置任务优先级。其参数值范围为 -1023~1024 ,该值越高,越优先运行。但是该参数设置为正数需要较高的权限,系统普通用户不能设置为正数。
-j y|n
设置是否将标准输出和标准错误输出流合并到 -o参数结果中。
-pe
设置并行化环境。
- 任务提交后的管理如表2所示。
表2 任务提交后的常用命令参数说明 参数
说明
qstat -f
查看当前用户在当前节点提交的所有任务,任务的状态有6种情况:
- qw,等待状态。刚提交任务的时候是该状态,一旦有计算资源了会马上运行;
- hqw,该任务依赖于其它正在运行的job,待前面的job执行完毕后再开始运行,qsub提交任务的时候使用-hold_jid参数则会是该状态;
- Eqw,投递任务出错;
- r,任务正在运行;
- s,被暂时挂起,往往是由于优先级更高的任务抢占了资源;
- dr,节点异常退出后,删除任务就会出现这个状态,只有节点重启后,任务才会消失。
qstat jobID
按照任务id查看。
qstat -u user
按照用户查看。
qdel jobID
删除任务。