上一次,小编把常用的Linux命令做了分享。但是,在我们进行生物信息学分析时,往往需要在高性能服务器集群上投递任务。这就需要我们掌握基本的集群操作方法。
我们使用高性能服务器集群时,需要通过ssh远程连接,在Windows下有很多软件可以通过ssh连接Linux主机,如Xshell、putty等等……在这里小编推荐Xshell,大家可以使用学校邮箱在官网申请使用教育版。
申请地址:
/zh/free-for-home-school/
填好信息以后,邮箱会收到一封邮件,点击链接下载Xshell和Xftp,安装软件就行啦!
安装好以后打开软件,点击“新建”,创建一个新的会话。
在“主机”处输入服务器的IP地址。
点击“用户身份验证”,输入用户名和密码,就可以登录服务器啦!
需要注意的是,我们是远程连接服务器,如果你的连接断掉的话,在Xshell里执行的命令是会终止的!!!
为了避免我们执行的命令由于连接断开而终止,我们在执行命令时可以使用“nohup”命令。
## 输入命令nohup command &## 退出终端exit
这样,我们就把任务提交到了后台,重新登录服务器以后,就会看到提交命令的目录下多了一个"nohup.out"文件,运行日志都记录在里面。点击“Xftp”的图标,就可以把输出文件下载到我们的电脑里。
但我们使用的服务器集群大都由登录节点和计算节点组成。登录节点用来执行简单的Linux命令,不能执行消耗资源大的任务,这时我们就需要将任务由登录节点投递至计算节点。在这里,小编教大家如何使用集群管理系统SGE(Sun Grid Engine)投递任务。
(注意:不同单位的服务器集群管理系统可能不同!系统不同命令也不同!具体可咨询服务器管理员!)
我们首先使用SGE在登录节点投递任务,SGE接收到任务后会将任务储存至一个指定区域,随后将任务投递至一个计算节点运行,运行结束后将结果返回。这样我们我们在登录节点投递任务后,就可以关掉电脑做其他事,SGE会把我们的任务安排在计算节点里执行。
## 投递任务qsub -cwd -l vf=*G,p=n,h=node -q queue *.sh
-cwd:在当前目录下执行任务,同时,SGE的运行日志也会输出在当前目录
-l:申请所需的资源。vf=*G设置任务预计使用的内存大小(一般设置的值要稍微大一些,负责容易让节点挂掉),p=n设置所需的CPU数,h=node设置任务指定投递的节点名称。日常使用时,并不是每次都要设置这三个参数,大家可以根据自己的需要自行删减。
-q:指定任务要投递到队列名称。
*.sh:需要投递的任务,建议在脚本前加上完整路径。
输入这条命令,我们的任务就投递到服务器上啦!
任务投递成功后,我们可以使用"qstat"查询任务的状态。
## 查看任务状态qstat## 查看指定任务状态qstat -j job-ID## 删除任务qdel job-ID## 查看计算节点资源状况信息qhost
job-ID:任务号
state:任务状态。一般会有以下情况,"qw"代表任务在等待执行状态,"r"代表任务正在执行,"s"代表任务暂时挂起,"dr"代表任务所在的计算节点挂了,需要联系管理员重启节点。任务还有其他状态,大家具体遇到时可以查询一下。
queue:任务所在的队列及计算节点。如图所示,代表任务被投递在了"rna"队列的“cu-0029"队列上。
最后再教给大家一个命令"qhost",使用该命令可以查看计算节点的资源状况,方便我们选择任务投递的队列和节点。
SGE还有非常多的指令,具体需要时,大家可以在网上查询。
参考资料:
SUN Grid Engine
/p/b7b540a3c015