#如何在linux下创建一个可运行shell脚本
10年积累的做网站、网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计制作后付款的网站建设流程,更有岗巴免费网站建设让你可以放心的选择与我们合作。
#新建一个.sh文件
touch cellranger.count.sh
#编辑test.sh文件
vi test.sh
#键入i,输入内容;#!/bin/sh必须放在第一行;然后键入esc键,输入:wq保存退出
#给test.sh赋予可执行权限
chmod +x test.sh
#执行脚本
sh test.sh
PBS 脚本格式 :PBS脚本为.pbs文件,将提交任务的命令写在PBS脚本中提交,PBS脚本由抬头的任务详情和具体命令组成:
抬头任务详情格式:
#PBS -N myjob
#PBS -o /home/jz/my.out
#PBS -e /home/jz/my.err
#PBS –l nodes=2:ppn=1
#########################创建自己的
这里的#不是注释的意思
#PBS -N cellranger.f
#PBS -o /home/yifan/project/LJ.22.02.sc/cellranger/my.out
#PBS -e /home/yifan/project/LJ.22.02.sc/cellranger/my.err
#PBS –l nodes=2:ppn=1
cd /home/yifan/project/LJ.22.02.sc
for id in KOAC KONC WTAC WTNC
do
/home/yifan/software/cellranger-6.1.2/cellranger count --localcores=40 --localmem=120 --id=${id}2 --transcriptome=/home/yifan/data/ref/cellranger.mm10/refdata-gex-mm10-2020-A --nosecondary --fastqs=/home/yifan/project/LJ.22.02.sc --sample=${id}
done
一般格式:qsub + 脚本名称,
如:qsub myname.pbs
cd /home/yifan/project/LJ.22.02.sc
qsub cellranger.count.sh
65690.mu01 #给出了任务号
命令格式:qatat[-f][-a][-i] [-n][-s] [-R] [-Q][-q][-B][-u]
qstat -an
参数说明:
-f jobid 列出指定作业的信息
-a 列出系统所有作业
-i 列出不在运行的作业
-n 列出分配给此作业的结点
-s 列出队列管理员与scheduler 所提供的建议
-R 列出磁盘预留信息
-Q 操作符是destination id,指明请求的是队列状态
-q 列出队列状态,并以alternative 形式显示
-au userid 列出指定用户的所有作业
-B 列出PBS Server 信息
-r 列出所有正在运行的作业
-Qf queue 列出指定队列的信息
-u 若操作符为作业号,则列出其状态。
若操作符为destination id,则列出运行在其上的属于user_list中用户的作业状态。
例:# qstat -f 211 查询作业号为211 的作业的具体信息。
PBS,也就是美国公共电视网(英语:Public Broadcasting Service,也称公共广播协会或美国公共电视台),是美国的一个公共电视机构,由354个加盟电视台组成,成立于1969年,总部位于维吉尼亚州阿灵顿县,主要制播教育与儿童节目。知名的儿童节目《芝麻街》就是该台制播的。
PBS是一个批处理作业和计算机系统资源管理软件包。它原本是按照POSIX 1003.2d批处理环境来开发的。这样,它就可以接受批处理作业、shell脚本和控制属性,作业运行前对其储存并保护,然后运行作业,并且把输出转发回提交者。
PBS可以被安装并配置运行在单机系统或多个系统组来支持作业处理。由于PBS的灵活性,多个系统可以以多种方式组合。
在.def文件所在的同一个文件夹里编辑.pbs文件,然后键入或者粘贴以下.pbs代码中的命令(把我添加的注释删掉)进去,然后运行qsub test.pbs即可。
#!/bin/sh -f
#PBS -N cfx_test %作业名称
#PBS -q batch %作业序列
#PBS -l nodes=cu01:ppn=2+cu05:ppn=2 %使用的节点和每个节点使用的核数,cu01需要换成实际的节点名称
#PBS -l walltime=00:02:00 %作业运行时间
##################################################################
#具体路径根据实际情况修改,或者(亲测)直接删掉这几行应该也能运行
source /opt/intel/composer_xe_2015/bin/compilervars.sh intel64
source /opt/intel/composer_xe_2015.1.133/mkl/bin/intel64/mklvars_intel64.sh
source /opt/intel/impi/5.0.2.044/intel64/bin/mpivars.sh
########################################################
cd $PBS_O_WORKDIR
cat $PBS_NODEFILE /$PBS_O_WORKDIR/nodefile
input=test.def %所在目录下的.def文件
#注意修改cfx5solve的实际路径
date
#并行运行,串行将-start-method后改成"Serial",后面删掉。
nohup /opt/ansys_inc/v150/CFX/bin/cfx5solve -def $input -double -start-method "HP MPI Distributed Parallel" -par-dist cu01*2,cu05*2
date
exit
qstat 不是linux命令,此命令用于PBS公开源代码的作业管理系统。
qstat 命令—用于查询作业状态信息
命令格式:qatat [-f][-a][-i] [-n][-s] [-R] [-Q][-q][-B][-u]
参数说明:
-f jobid 列出指定作业的信息
-a 列出系统所有作业
-i 列出不在运行的作业
-n 列出分配给此作业的结点
-s 列出队列管理员与scheduler 所提供的建议
-R 列出磁盘预留信息
-Q 操作符是destination id,指明请求的是队列状态
-q 列出队列状态,并以alternative 形式显示
-au userid 列出指定用户的所有作业
-B 列出PBS Server 信息
-r 列出所有正在运行的作业
-Qf queue 列出指定队列的信息
-u 若操作符为作业号,则列出其状态。
若操作符为destination id,则列出运行在其上的属于user_list 中用户的作业状态。
例:# qstat -f 211 查询作业号为211 的作业的具体信息。
LSF abbr. 分布式异构计算机环境的负载管理系统(Load Sharing Facility) Today's popular queuing systems include some pay for products such as: LSF and PBS Pro. 当今流行的队列系统包括一些付费产品,比如 LSF 和 PBS Pro。
在 上一篇 中我们非常简单地介绍了在 C 语言中嵌入 mpi4py 程序的方法。
前面我们所给出的各个例程一般都是在单台计算机上直接使用 mpiexec 或 mpirun 执行的,但是在实际应用中,对规模比较大的高性能计算任务,一般会提交到集群或超级计算机平台上进行计算。集群系统具有低成本、高性能的特性,提供了强大的批处理和并行计算能力,代表了高性能计算机发展的新方向。在集群或者超级计算机平台上,一般不能随意地直接以 mpiexec 或 mpirun 运行我们的并行计算程序,而必须通过其上提供的作业管理系统来提交计算任务。作为集群系统软件的重要组成部分,集群作业管理系统可以根据用户的需求,统一管理和调度集群的软硬件资源,保证用户作业公平合理地共享集群资源,提高系统利用率和吞吐率。下面我们将简要地介绍几个常用的集群作业管理系统:PBS,LSF 和 SLURM。下面我们首先简要介绍 PBS 作业管理系统。
PBS (Protable Batch System) 作业管理系统会根据一个集群上的可用计算节点的计算资源管理和调度所有计算作业(无论是批处理作业还是交互式作业)。
可以用两种方式设置 PBS 作业属性:
下表列出常用的 PBS 作业属性
比较常用的作业资源如下:
可以用以下方法设定节点资源构型:
下表列出常用的 PBS 环境变量:
用以下命令形式提交批处理作业:
作业提交后一般会先排队等待,PBS 系统会根据作业的优先级和可用的计算资源来调度和执行作业。
PBS 脚本本质上是一个 Linux shell 脚本,在 PBS 脚本中可以用一种特殊形式的注释(#PBS)作为 PBS 指令以设定作业属性。下面是一个 PBS 脚本示例:
用以下命令提交该作业:
要取消或停止一个作业,需要得到该作业的作业标识号 job ID ,可以通过 qstat 命令获得。
取消一个正在排队等待的作业,可用以下命令:
要停止一个正在运行的作业,可用向其发送 KILL 信号:
交互式的计算作业通过类似于下面的命令使用:
例如要求 2 台计算节点,运行在 example-queue 队列上的交互式作业,执行如下命令:
执行完以上命令,等 PBS 系统分配好资源后会进入所分配的第一台计算节点,可在其命令终端上执行交互式的计算任务,如要退出交互作业,可在终端输入 exit 命令,或使用按键 Ctrl+D。
以上简要介绍了 PBS 作业管理系统,在 下一篇 中我们将介绍 LSF 作业管理系统。
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款