qsub使用简介 您所在的位置:网站首页 vasp提交任务命令 qsub使用简介

qsub使用简介

2023-10-09 09:41| 来源: 网络整理| 查看: 265

qsub使用简介(小白学习篇) 参考:

CC敲代码的日常:https://mp.weixin.qq.com/s/UoJE5vBnrzPNomLeIvJIeQ 生信骚操作:https://mp.weixin.qq.com/s/gO–Yv9ZakXGaCCqMksUVA 基本上qsub使用你看上面两个就好了,这里是小白式学习记录(纯电脑小白那种)。

前言:

首先我是一个什么都不会的qsub小白,本文所有的测试命令都是从0开始学习,希望你能在看完本篇qsub使用命令简介后也能学会他,也希望qsub老手们能提出更好的建议!” 在学校服务器里或者外面租的服务器里面总是要使用到qsub来提交任务,一般是老师、师兄师姐或者同事告诉你不要直接在服务器终端跑大型命令,也不要在根目录下或者主目录下跑命令。他们告诉你要用qsub或者nohup(nohup 也是一种挂在后台的方法,但是和qsub有所不同)。这时候去百度qsub的时候发现一头雾水,什么SGE集群,一堆没详细中文解释的参数(反正我是看不懂,反而觉得他们写的太简洁了)。就是一个提交命令而已,反而弄的很复杂,我们就从头开始学习吧!

正式开始: 终端输入qsub 在这里插入图片描述 什么都没有,ctrl + C 终止后提示你读不到脚本,标准输入里面没东西。写一个测试脚本,跑跑看 # qsub-learn.sh echo "hello world" # test qsub qsub-learn.sh

在这里插入图片描述 提示任务上交了,但是等了半天没反应啊?终端也没有hello world输出。 这时候可以用qstat来看命令运行情况,但由于代码太过简单,自然你还没看到就跑完了。

原因是qsub的默认输出环境为 主目录,去主目录看看。 # 去主目录 cd ~ # 按时间顺序排序来看 ll -t

在这里插入图片描述 没错,你发现有两个文件在主目录产生了(这是一个不好的习惯,主目录应该保持干净) 聪明的你肯定已经猜到了,没错,我的“hello world”到qsub-learn.sh.o248593这个文件里面了 在这里插入图片描述 那这个file.e248593是什么? 你可以用man qsub 来看到这个文件代表什么(如果你英语强的话你直接看这个就好啦)

man qsub

在这里插入图片描述就是 任务的标准错误流, 如果报错了报错信息就会出现在这里面。 同理,file.o123456 代表任务的标准输出流。 在这里插入图片描述 3. 再写一个脚本测试

# test.sh echo "test right here" > qsub_rlt.txt # 修改 qsub-learn.sh echo "hello world" bash test.sh # 运行命令 qsub qsub-learn.sh

发现主目录又产生了两个文件 在这里插入图片描述 打开看看 在这里插入图片描述 错误信息有了,一个看不懂的错误。 输出内容怎么还多了1个0? 而且 qsub_rlt.txt 没有? 一一来解释: 错误信息是因为test.sh 是一个命令,对,奇怪是吧。但是就是有。你可以用which看到确实有一个这个文件。 输出信息有0是因为第二行的bash test.sh 失败了,返回了一个0。 那我修改一下test.sh的名字

# mytest.sh echo "test right here" > qsub_rlt.txt # 修改 qsub-learn.sh echo "hello world" bash mytest.sh # 运行命令 qsub qsub-learn.sh

主目录两个文件 在这里插入图片描述 没找到文件?mytest.sh 明明就在我的提交目录里面啊,下面标准输出倒是对的。 好吧,我就不说那么多废话了,我打字打的都累了,现在开始直接一点好吧,我又不是在写书(手动滑稽)。

原因:说了默认主目录,主目录里面没有.sh你说找的到吗? 解决:-cwd 1. 当前目录下执行 -cwd

qsub -cwd qsub-learn.sh

在这里插入图片描述 有的qsub没有-cwd这个参数,输入后会显示: 在这里插入图片描述 目前我不知道问题所在,可能是版本原因还是其他原因。 我在不同服务器使用qsub,使用方式不一样。 比如这里我们去看 man qsub 说明书,发现定义工作目录的命令-d : 这里定义工作路径,如果没有定义的话,就默认为主目录。 在这里插入图片描述

qsub -d ./ qsub-learn.sh

在这里插入图片描述

成功了! 使用-cwd或者-d ./ 这样我们就不用每次输入麻烦的绝对路径了。

下面我们再来加上一点点细节

cat qsub-learn.sh #! /usr/bin/bash -e echo "hello world" bash mytest.sh bash youli.sh echo "yes" qsub -d ./ -q fat -N kirito -l nodes=1:ppn=4 -V -j oe qsub-learn.sh

这里注意我们将上传的.sh文件添加了首行,-e参数代表如果命令在执行过程中有一个出错了,就停止,这里我们没有youli.sh,所以不会输出yes到标准流。 -q:指定投递队列 -N: 指定作业任务的名称 -l: 一些任务的指定参数 -V :将用户提交节点的环境变量导到计算节点上,一般都加上 -j:将错误流和输出流合并在一个文件

嫌麻烦,直接写在文件里面(-d换成-cwd同理)

cat qsub-learn.sh #! /usr/bin/bash -e #PBS -N learn #PBS -l nodes=1:ppn=4 #PBS -j oe #PBS -V #PBS -d ./ #PBS -q fat # echo "hello world" bash mytest.sh bash youli.sh echo "yes"

详细用法请直接 man qsub 学习(不过都是英文) 生信的基本用法参考我这些应该没太大问题了。(反正我是这样用的) 在这里插入图片描述

后续会陆续更新新用法。 最后转载一下常用命令: 批量提交pbs文件也可以看这个推文,写的真好:

命令 功能 使用说明 示例 qsub | 提交作业 | qsub [script] | $ qsub job.pbs qdel | 删除作业 | qdel [job_id] | $ qdel 12345 qhold | 挂起作业 | qhold [job_id] | $ qhold 12345 qrls | 释放作业 | qrls [job_id] | $ qrls 12345

qstat -q 列出所有队列 qstat -a 列出所有作业 qstat -u user_id 列出user_id的所有作业 qstat -r 列出所有正在运行的作业 qstat -f job_id 列出作业job_id的信息 qstat -fQ queue 列出队列queue的信息 qstat -B 列出所有作业状态的汇总 pbsnodes 列出所有节点的详细信息 pestat 列出所有节点的状态



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有