我想用Platform LSF提交一个作业,并将输出放在一个文件(bsub -o)中,最后没有作业报告.使用bsub -N从文件中删除作业报告,而是通过电子邮件发送报告.有没有办法完全压制它?
假设我使用类似的东西提交工作bsub pwd.现在我想获得该作业的作业ID,以便为下一个作业构建依赖项.有什么方法可以让bsub返回作业ID吗?
bsub与 LSF 一起使用时,该-o选项提供了许多详细信息,例如作业何时开始和结束以及作业占用了多少内存和 CPU 时间。使用 SLURM,我得到的只是在没有 LSF 的情况下运行脚本时得到的相同标准输出。
例如,给定这个 Perl 6 脚本:
warn "standard error stream";
say "standard output stream";
Run Code Online (Sandbox Code Playgroud)
提交如下:
sbatch -o test.o%j -e test.e%j -J test_warn --wrap 'perl6 test.p6'
Run Code Online (Sandbox Code Playgroud)
结果在文件中test.o34380:
Testing standard output
Run Code Online (Sandbox Code Playgroud)
和文件test.e34380:
Testing standard Error in block <unit> at test.p6:2
Run Code Online (Sandbox Code Playgroud)
使用 LSF,我会在标准输出文件中获得各种详细信息,例如:
Sender: LSF System <lsfadmin@my_node>
Subject: Job 347511: <test> Done
Job <test> was submitted from host <my_cluster> by user <username> in cluster <my_cluster_act>.
Job was executed on host(s) …Run Code Online (Sandbox Code Playgroud) 我过去常常使用LSF服务器,但现在我只使用SLURM过渡到一个服务器.
在SLURM中,bpeek(对于LSF)的等效命令是什么?
bpeek bpeek显示未完成作业的stdout和stderr输出
我无法在任何地方找到文档.如果您对SLURM有一些很好的参考,请告诉我.谢谢!
基本问题:我想将N + 1个作业提交给LSF管理的Linux集群,这样 就可以在前N个作业完成之前不运行(N + 1)-st"总结"作业.
EXTRA: 如果可能的话,如果我可以安排事情以便(N + 1)-st("总结")作业作为其第一个参数接收值为0(比如说,如果以前的话),那将是理想的N个作业成功终止,否则值不同于0.
这个问题(或者至少标有"BASIC PROBLEM"的部分)比LSF 设计用来处理的要简单得多bsub,所以我很难浏览大量的文档bsub来找出做我想做的最简单的方法.去做.
bsub实现这种安排最简单的命令是什么?
更具体地说,我需要更换???下面的各个插槽以确保wrapup仅在所有foo作业完成后执行(理想情况下使用反映foo作业结束状态的参数)?
bsub -q someq ??? foo 1
bsub -q someq ??? foo 2
bsub -q someq ??? foo 3
bsub -q someq ??? wrapup [???]
Run Code Online (Sandbox Code Playgroud) 为什么不建议squeue循环运行以避免 Slurm 过载,但bjobsLSF 或qstatSGE 的工具没有提到此类限制?
手册页的squeue状态:
表现
执行 squeue 会向 slurmctld 发送远程过程调用。如果来自 squeue 或其他 Slurm 客户端命令的足够多的调用(将远程过程调用发送到 slurmctld 守护程序)一次传入,则可能会导致 slurmctld 守护程序的性能下降,甚至可能导致拒绝服务。
不要运行 squeue 或其他从 shell 脚本或其他程序中的循环向 slurmctld 发送远程过程调用的 Slurm 客户端命令。确保程序将对 squeue 的调用限制为您尝试收集的信息所需的最低限度。
据我了解,这不赞成使用例如watch squeue。此类警告常见于特定站点的文档中,例如此处:
虽然 squeue 是查询作业和队列状态的便捷命令,但请注意不要发出过多的命令,例如作业提交后每五秒左右使用脚本调用一次作业状态查询。
相比之下,我在其他引擎上找不到类似工具的警告,例如qstat或bjobs。我看到人们以重复的方式使用所有这些工具,没有区别,例如这里用于 squeue,这里用于 bjobs。
上面引用的 Slurm 文档提到了 RPC,它是一种与其他引擎不同的方式吗?Slurm 和其他网格引擎之间是否存在架构差异,导致查询所有作业的状态成本更高?
我对LSF平台有一个问题我无法解决这个问题.
出于脚本原因,我需要使用perl脚本检查带有'bjobs'(和其他b***)的正在运行/挂起的作业.
由于某种原因,它不起作用,我能够查看以下错误消息:
lsb_init: Failed in an LSF library call: Unable to open file lsf.conf
Run Code Online (Sandbox Code Playgroud)
一些关于谷歌和手册的研究没什么好处,我做了一点测试.
我的帐户(最大)是LSF管理员.Root也是LSF管理员.
所以我切换到root,并尝试启动bjobs,但最大限度地使用'sudo -u max'.请看一下这些命令:
hn[~]=> whoami
max
hn[~]=> bjobs
No unfinished job found
hn[~]=> su
Password:
[root@hn max]# whoami
root
[root@hn max]# sudo -u max whoami
max
[root@hn max]# bjobs
No unfinished job found
[root@hn max]# sudo -u max bjobs
lsb_init: Failed in an LSF library call: Unable to open file lsf.conf
Run Code Online (Sandbox Code Playgroud)
我怎么能纠正这个?
我可以向SLURM提交"单行"吗?
使用bsubLSF和标准Linux实用程序xargs,我可以轻松地提交一个单独的作业来解压缩目录中的所有文件:
ls *.gz | sed 's/.gz$//g' | xargs -I {} bsub 'gunzip -c {}.gz > {}'
Run Code Online (Sandbox Code Playgroud)
使用SLURM,我认为srun或sbatch将会工作,但无济于事:
ls *.gz | sed 's/.gz$//g' | xargs -I {} srun 'gunzip -c {}.gz > {}'
gzip: srun: error: compute-node-01: task 0: Exited with exit code 1
stdin: unexpected end of file
ls *.gz | sed 's/.gz$//g' | xargs -I {} sbatch 'gunzip -c {}.gz > {}'
sbatch: error: Unable to open file gunzip -c …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 bsub 向 LSF 调度程序提交命令,但此命令包含一个必须用引号引起来并包含分号的参数值。
这是一个简单的命令来说明我的问题
bsub -o t.o -e t.e echo "foo;bar"
Run Code Online (Sandbox Code Playgroud)
它因“第 8 行:bar:未找到命令”而失败,所以我以为我可以转义分号,但是这
bsub -o t.o -e t.e echo "foo\;bar"
Run Code Online (Sandbox Code Playgroud)
导致同样的错误,这也是
bsub -o t.o -e t.e echo 'foo;bar'
Run Code Online (Sandbox Code Playgroud)
我知道我可以通过将命令写入脚本文件并将其作为 bsub 命令执行来解决它,但在这种情况下,我将测试许多参数,并且只修改 bsub 命令而不是每次编辑一个shell脚本。
谢谢你的帮助!