问:如何在"典型"Torque MPI系统上找到可用的PBS队列?(要求我们的管理员需要24小时以上,系统会随着迁移而变化)
(例如,"Std8"是一个可能的队列)
#PBS -q Std8
如何将作业发送到PBS/TORQUE中的特定节点?我认为你必须在节点之后指定节点名称.
#PBS -l nodes=abc
Run Code Online (Sandbox Code Playgroud)
但是,这似乎不起作用,我不知道为什么.这个问题在PBS上被问到 并指定要使用的节点
这是我的示例代码
#!/bin/bash
#PBS nodes=node9,ppn=1,
hostname
date
echo "This is a script"
sleep 20 # run for a while so I can look at the details
date
Run Code Online (Sandbox Code Playgroud)
另外,如何检查作业运行的节点?我看到某个地方$PBS_NODEFILE显示了细节,但它似乎对我不起作用.
为了得到myscript.R使用作业调度集群从属节点上运行(即,PBS)
目前,我使用以下命令将R脚本提交给从属节点
qsub -S /bin/bash -p -1 -cwd -pe mpich 1 -j y -o output.log ./myscript.R
Run Code Online (Sandbox Code Playgroud)
R中是否有函数允许我在头节点上运行myscript.R并将各个任务发送到从节点?就像是:
foreach(i=c('file1.csv', 'file2.csv', pbsoptions = list()) %do% read.csv(i)
Run Code Online (Sandbox Code Playgroud)
更新:qsub命令的替代解决方案是#/usr/bin/Rscript从第一行删除myscript.R并直接调用它,如@Josh所指出的
qsub -S /usr/bin/Rscript -p -1 -cwd -pe mpich 1 -j y -o output.log myscript.R
Run Code Online (Sandbox Code Playgroud) 当我提交工作时
qsub script.sh
Run Code Online (Sandbox Code Playgroud)
被$@设置好的到里面的一些价值script.sh?也就是说,是否有任何命令行参数传递给script.sh?
从打印在后台的函数打印输出后,如何自动返回到bash提示符?
例如,当我在bash shell中运行以下脚本时:
fn(){
sleep 10
echo "Done"
exit
}
fn &
运行脚本后,它会立即返回我的提示.10秒后,它会打印"完成",然后在新行上显示一个闪烁的光标:
$ Done ?
脚本不再运行了,但是在我按下之前我没有收到提示Return.
打印"完成"后有没有办法强制返回bash提示符?
一个相关的问题是:是否有办法让后台任务通知终端打印新提示?但是,这个问题询问了一个背景计划.提供有答案适用于程序发送到后台,但似乎并没有为工作函数发送到后台(在我提供的例子).
澄清:我希望保存上面的整个代码片段(例如,as myscript.sh),然后将其作为前台脚本运行(例如,as bash myscript.sh).
编辑:以上当然只是一个MWE.这个问题的背景是:
fn &fn监视队列并tail在作业完成时终止.这里有一些不那么简单的代码:
watch_queue(){
until [ `qstat | grep $job | wc -l` -lt 1 ]; do
sleep 2
done
kill -9 $pid
tput setaf 7
tput setab 0
echo "Hit ENTER to return … 我有一个长期运行的Torque/PBS工作,我想监控输出.但是只有在作业完成后才会复制日志文件.有没有办法说服PBS刷新它?
我一直在尝试为小型集群设置扭矩调度程序.我按照步骤从http://docs.adaptivecomputing.com/torque/archive/3-0-2/1.2configuring_torque_on_server.php设置了调度程序.
但是,当我尝试
qterm -t quick
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
$ sudo qterm -t quick
Unable to communicate with Terra(192.168.1.25)
Cannot connect to specified server host 'Terra'.
qterm: could not connect to server '' (111) Connection refused
Run Code Online (Sandbox Code Playgroud)
但服务器启动就好了.但是,当我尝试运行在多个节点上运行的命令时,例如
qsub -l nodes=2:ppn=4 /home/user/scripts/someScript
Run Code Online (Sandbox Code Playgroud)
它打印出一些像
7.Terra
Run Code Online (Sandbox Code Playgroud)
其中Terra是头节点的名称,但也是群集中的节点.这不是问题.问题是它没有运行.它也没有任何产出:/
扭矩服务器日志:https://ptpb.pw/EaKo
terra节点日志:https: //ptpb.pw/9w5M
和Marte日志:https: //ptpb.pw/o4PT
我可以使用pbs脚本运行它,但只能使用一个节点....
#!/bin/bash
#PBS -l pmem=1gb,nodes=1:ppn=4
#PBS -m abe
cd Documents/
wc -l largeTest.csv
Run Code Online (Sandbox Code Playgroud)
这是qstat提交工作后的输出
Job ID Name User Time Use S
Queue
------------------------- …Run Code Online (Sandbox Code Playgroud) 使用qsub提交批处理作业时,有没有办法排除某个节点(按主机名)?
就像是
# this is just a pseudo command:
qsub myscript.sh --exclude computer01
Run Code Online (Sandbox Code Playgroud) 我想使用"qsub -v"命令将变量传递给csh脚本.我知道我们可以列出参数 - 值对,如下所示,
qsub -v par1=value1 par2=value2 myScript.csh
Run Code Online (Sandbox Code Playgroud)
有谁知道这些参数的值是否可以是字符串,由逗号或文件名分隔的数字列表?例如,下面的命令可能吗?
qsub -v par1='Cassie_score' par2=cassieFile.txt par3='100,200,300,' myScript.csh
Run Code Online (Sandbox Code Playgroud)
非常感谢你,
我正在尝试提交一个依赖于阵列完成的扭矩作业.
FIRST=`qsub -q hep -t 1-5 foo.sh`
qsub -q hep -W depend=afterok:$FIRST bar.sh
FIRST作业数组提交并完成正常,但第二个作业bar.sh只是无限期地保留.
如果我从第一个参数中删除数组选项,第二个作业将按计划成功,但这并不能解决问题.
3年前有一个类似的线程,但似乎没有实际解决方案:
如何等待扭矩作业阵列完成
谢谢你的帮助.