计算化学公社
标题:
利用pbs批量提交作业的方法
[打印本页]
作者Author:
三迩-
时间:
2017-9-27 20:23
标题:
利用pbs批量提交作业的方法
目前作业是利用pbs形式提交的
#!/bin/bash
#PBS -N Gauss
#PBS -l nodes=1:ppn=16
##PBS -l walltime=240:00:00
#PBS -j oe
#PBS -V
#Please give the name of the INPUT_FILE, such as test.com or ONLY test. Both of them can work.
INPUT_FILE=xxx.com
#----> enter the working directory <----
cd $PBS_O_WORKDIR
echo This job begins at: `date`
..........
.........
但是每次都需要替换文件名,
看了一个帖子,尝试了一下以下方法:
#!/bin/bash
counts=$(ls -l *.com|wc -l)
ls -l *.com \
| awk '{print $NF}'\
| sed 's/.com//g' \
| while read each_file
do
sed -i -r "/^\s*INPUT_FILE=/c INPUT_FILE=$each_file" g09E01.pbs.sh
qsub g09E01.pbs.sh &
a=$((a+1))
[[ $a -eq $counts ]]&&break
while((1))
do
thread=(ps -ef|grep 'qsub g09E01.pbs.sh'|grep -v grep|wc -l)
[[ $thread -lt 5 ]]&&break||sleep 1
done
sleep 1
done
但也不成功,求问大神有什么好方法能一次同时提交6个或多个作业,然后少于一定数目自动补上提交作业?
作者Author:
samplx
时间:
2017-9-28 00:41
thread=(qstat|grep $USER|wc -l) ?
作者Author:
冰释之川
时间:
2017-9-28 08:57
类似这样?
#!/bin/bash
for i in `ls -F |grep /`
do
cd $i
for inf in *.pbs
do
echo Running ${inf} ...
time qsub < ${inf}
echo ${inf} is finished
echo
done
cd ..
done
复制代码
作者Author:
milkxx
时间:
2017-9-28 16:13
thread=(ps -ef|grep 'qsub g09E01.pbs.sh'|grep -v grep|wc -l)
这一行并不能实现你的要求。
提交作业是一个很快速的过程,qsub g09E01.pbs.sh命令将在极短的时间内完成,猜想你的要求是 查看队列中存在的作业数,建议用qstat命令
作者Author:
abin
时间:
2017-9-29 11:17
cd $PBS_O_WORKDIR
ls *com > joblist
for INPUT_FILE in `cat joblist`
do
g09 $INPUT_FILE &
done
或者g09 $INPUT_FILE & 这句修改为你脚本中的执行高斯的行。
这个会提交一堆。 都交给PBS管理。
作者Author:
etoac
时间:
2017-9-29 13:16
本帖最后由 etoac 于 2021-4-14 21:03 编辑
已删除
作者Author:
三迩-
时间:
2017-10-5 21:07
谢谢各位老师,问题已解决。
作者Author:
Qinqi
时间:
2019-6-11 10:30
请问楼主如何解决的
欢迎光临 计算化学公社 (http://bbs.keinsci.com/)
Powered by Discuz! X3.3