惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Application and Cybersecurity Blog
Application and Cybersecurity Blog
A
About on SuperTechFans
S
SegmentFault 最新的问题
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Help Net Security
Help Net Security
有赞技术团队
有赞技术团队
博客园 - 【当耐特】
O
OpenAI News
美团技术团队
月光博客
月光博客
Apple Machine Learning Research
Apple Machine Learning Research
Schneier on Security
Schneier on Security
Webroot Blog
Webroot Blog
Cyberwarzone
Cyberwarzone
Hacker News - Newest:
Hacker News - Newest: "LLM"
Google Online Security Blog
Google Online Security Blog
T
Tenable Blog
S
Security Affairs
博客园_首页
S
Schneier on Security
Security Latest
Security Latest
T
Threat Research - Cisco Blogs
T
Tailwind CSS Blog
大猫的无限游戏
大猫的无限游戏
Spread Privacy
Spread Privacy
量子位
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
K
Kaspersky official blog
Hugging Face - Blog
Hugging Face - Blog
TaoSecurity Blog
TaoSecurity Blog
博客园 - 聂微东
Vercel News
Vercel News
M
MIT News - Artificial intelligence
T
Troy Hunt's Blog
B
Blog
MongoDB | Blog
MongoDB | Blog
Martin Fowler
Martin Fowler
Attack and Defense Labs
Attack and Defense Labs
L
LINUX DO - 最新话题
D
DataBreaches.Net
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Stack Overflow Blog
Stack Overflow Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
博客园 - Franky
W
WeLiveSecurity
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
F
Fortinet All Blogs
www.infosecurity-magazine.com
www.infosecurity-magazine.com
C
Check Point Blog
H
Hacker News: Front Page

郑泽鑫的博客

使用 Github Actions 自动更新 ANNOVAR 的 Clinvar 数据库 2020 年终总结 - 郑泽鑫的博客 解包一个 PAR 打包的 perl 程序源码 VPS装机记录(3):任务机器人 - 郑泽鑫的博客 VPS装机记录(2):使用mosh - 郑泽鑫的博客 2019 年终总结 - 郑泽鑫的博客 VPS装机记录(1):SSH篇 - 郑泽鑫的博客 Typecho博客被刷垃圾评论 - 郑泽鑫的博客 记录 VEP 关于 COSMIC 注释的一个坑 记录一次 Name.com 自动续费成功退款的经过 - 郑泽鑫的博客 静态编译 Tmux - 郑泽鑫的博客 基因组、cDNA、氨基酸坐标转换神器:Transvar - 郑泽鑫的博客 macOS Case Sensitive to Case Insensitive(使用 Carbon Copy Cloner) 2018 年终总结 - 郑泽鑫的博客 ANNOVAR (3): 更新 COSMIC 数据库 (v70+) ANNOVAR (2): 关于注释数据库 - 郑泽鑫的博客 PyInstaller 打包 python 脚本的一些心得 - 郑泽鑫的博客 今天是万圣节 - 郑泽鑫的博客 用 youtube-dl 下载油管视频 - 郑泽鑫的博客 伊恩结 - 郑泽鑫的博客 annovar 注释软件 - 郑泽鑫的博客 Pileup Format 学习笔记 - 郑泽鑫的博客 SAM 文件学习笔记 - 郑泽鑫的博客 Github 万圣节彩蛋 - 郑泽鑫的博客
阿里云PBS作业排队管理 - 郑泽鑫的博客
with / · 2020-06-27 · via 郑泽鑫的博客

找了很久PBS的文档,阿里云的PBS应该是OpenPBS,现在名字叫做PBS Pro,找了很久才找到个18.2版本的说明书,虽然服务器上的是18.1,但是版本相差不大,应该也通用。

PBSUserGuide18.2.pdf

然后最近写到一个程序,想要先等某些任务执行完才继续执行后面的任务。虽然snakemake也可以qsub提交任务,但是snakemake还不是很熟练。而我的Python脚本,需要自定义计算的地方很多,用snakemake也不方便,于是就想找PBS原生的实现方法。

在网上搜索,找到 -hold_jid-W depend 两种,一开始觉得 -hold_jid 这种比较简单明了,但是阿里云的 qsub 很多参数都不支持,其中 -hold_jid 就不支持。

用-W depend属性去修改

然后对于 -W depend 这个一开始有点迷糊,后来看过Userguide之后,才知道depend后面可以接多种参数,然后再用分号接job id;

# <type>:<arg list>[,<type>:<arg list> ...] 这种形式
# 其中<arg list>为<job ID>[:<job ID> ...] 这种形式的一串任务id
# type有如下几种,要执行的该任务我们称之为“任务A”,而arg list为depend的其他任务

after:<arg list> # arg list 开始执行 => 任务A执行
afterok:<arg list> # arg list 成功执行完 => 任务A执行
afternotok:<arg list> # arg list 执行完失败后 => 任务A执行
afterany:<arg list> # arg list 执行完后(不管是否成功完成) => 任务A执行
before:<arg list> # 任务 A 开始执行 => arg list执行(依赖on:count)
beforeok:<arg list> # 任务 A 成功执行完后 => arg list执行(依赖on:count)
beforenotok:<arg list> # 任务 A 执行完失败后 => arg list执行(依赖on:count)
beforeany:<arg list # 任务 A 执行完(不管是否成功) => arg list执行(依赖on:count)
on:count # 需要依赖的任务数,和以上的before一起搭配使用

下面为几个示例,

示例一

你有job1、job2、job3 三个任务,你想要job3在job1、job2完成后才开始执行

qsub job1
16394.jupiter
qsub job2
16395.jupiter
qsub -W depend=afterany:16394:16395 job3
16396.jupiter

示例二

你想要job2,必须在job1成功执行完后才开始执行

qsub job1
16397.jupiter
qsub -W depend=afterok:16397 job2
16396.jupiter

示例三

job1要在job2、job3前完成,要使用 beforeany,你必须同时使用 on

qsub -W depend=on:2 job1
16397.jupiter
qsub -W depend=beforeany:16397 job2
16398.jupiter
qsub -W depend=beforeany:16397 job3
16399.jupiter

用qalter去修改已经提交的任务

有时候,我们是多人使用一个集群,或者我们提交前没有考虑到,那么我们想修改已经提交的任务,就需要使用 qalter 命令。

比如,我们想让id为16397的任务插队,那么命令为 qalter -W depend=afterok:16397 16396,那么16396号任务就会在16397号任务成功完成后才能开始执行。

另外,如果我们已经像上面那样添加了afterok属性了,而我们又想修改为16396在16397开始执行后就可以开始执行,而不用等到执行成功之后,我们直接 qalter -W depend=after:16397 16396 是不能修改的。我们需要先 qalter -W depend=afterok 16396 清除afterok属性后,才可以重新修改。