计算化学公社

 找回密码 Forget password
 注册 Register
Views: 238|回复 Reply: 15
打印 Print 上一主题 Last thread 下一主题 Next thread

[任务提交/队列管理] 用lsf脚本提交g16计算任务的命令怎么写?

[复制链接 Copy URL]

123

帖子

0

威望

1294

eV
积分
1417

Level 4 (黑子)

跳转到指定楼层 Go to specific reply
楼主
用的是上海超算,脚本是g16.lsf
如下:

#!/bin/sh
#BSUB -J g16-job
#BSUB -q snode
#BSUB -n 32
#BSUB -R "span[ptile=32]"
#BSUB -o %J.out
#BSUB -e %J.err

$HOME/g16/g16 test.com

Linux小白,请问老师提交任务的命令怎么写?

180

帖子

0

威望

1149

eV
积分
1329

Level 4 (黑子)

2#
发表于 Post on 2024-9-12 20:49:34 | 只看该作者 Only view this author
这个不是应该看那边的手册么,看着就是bsub g16.lsf吧

123

帖子

0

威望

1294

eV
积分
1417

Level 4 (黑子)

3#
 楼主 Author| 发表于 Post on 2024-9-12 21:20:35 | 只看该作者 Only view this author
pal 发表于 2024-9-12 20:49
这个不是应该看那边的手册么,看着就是bsub g16.lsf吧

只要写bsub就会显示如下:
Request aborted by esub. Job not submitted.
所以我怀疑是不是我命令写的不够准确,我没有工程师联系方式,我看CSDN上写的lsf的用法,解释的是很详细,但奈何我太小白了,尝试了很多次都不对,所以看看老师能不能直接给出正确的命令方法

196

帖子

5

威望

1213

eV
积分
1509

Level 5 (御坂)

4#
发表于 Post on 2024-9-12 21:39:22 | 只看该作者 Only view this author
在 LSF 集群中,bsub 命令用于提交作业。关键在于,bsub 是一个读取标准输入(stdin)的命令。

因此,如果你直接使用 bsub g16.lsf,它会将 g16.lsf 当作一个参数,而不是当作脚本读取和执行。

这就是为什么不能用 bsub g16.lsf 提交作业。


正确命令
  1. bsub < g16.lsf
复制代码


123

帖子

0

威望

1294

eV
积分
1417

Level 4 (黑子)

5#
 楼主 Author| 发表于 Post on 2024-9-12 21:56:26 | 只看该作者 Only view this author
wxyhgk 发表于 2024-9-12 21:39
在 LSF 集群中,bsub 命令用于提交作业。关键在于,bsub 是一个读取标准输入(stdin)的命令。

因此,如 ...

任务成功提交了,太感谢了!老师我还有问题,lsf脚本的路径是/public/home/users/jx001,但是我的账户路径是/public/home/users/jx001/AndrewX,且有一个H2O.gjf文件存在其中,我的操作是,在/public/home/users/jx001/AndrewX路径下,输入bsub < /public/home/users/jx001 g16.lsf回车,现在(1)没有.log和.chk文件,(2)这次AndrewX文件夹只有一个输入文件,那在有多个输入文件的时候,我如何指定提交某个输入文件?

196

帖子

5

威望

1213

eV
积分
1509

Level 5 (御坂)

6#
发表于 Post on 2024-9-12 23:11:32 | 只看该作者 Only view this author
本帖最后由 wxyhgk 于 2024-9-12 23:15 编辑

为了避免每次重复的复制粘贴可以这么做

1. 建立 g16-bsub.lsf 脚本
  1. #!/bin/sh
  2. #BSUB -J g16-job
  3. #BSUB -q snode
  4. #BSUB -n 32
  5. #BSUB -R "span[ptile=32]"
  6. #BSUB -o %J.out
  7. #BSUB -e %J.err

  8. # 使用传递的参数作为输入文件
  9. $HOME/g16/g16 $1
复制代码
将这段代码保存为 g16-bsub.lsf 文件,然后保存到你的一个特定文件夹下面

2.bashrc 增加 g16-sub 函数
使用
  1. vim ~/.bashrc
复制代码

编辑 .bashrc 文件,增加下面的代码

  1. # 定义 g16-sub 函数
  2. function g16-sub {
  3.     # 获取传入的 .gjf 文件名
  4.     local gjf_file=$1
  5.    
  6.     # 检查输入文件是否存在
  7.     if [ ! -f "$gjf_file" ]; then
  8.         echo "错误:输入文件 $gjf_file 不存在!"
  9.         return 1
  10.     fi
  11.    
  12.     # 复制 bsub.lsf 脚本到当前目录
  13.     cp 特定文件夹/g16-bsub.lsf ./

  14.     # 修改 bsub.lsf 脚本,使其接收 $gjf_file 作为参数
  15.     sed -i "s/\$1/$gjf_file/g" g-16-bsub.lsf
  16.    
  17.     # 提交任务
  18.     bsub < g-16-bsub.lsf

  19.    
  20.     echo "任务已提交,输入文件:$gjf_file"
  21. }
复制代码


上面代码中的 “特定文件夹” 改成和第一步中一样的文件夹

然后每次就能直接使用
  1. g16-sub 名字.gjf
复制代码
来直接提交任务



123

帖子

0

威望

1294

eV
积分
1417

Level 4 (黑子)

7#
 楼主 Author| 发表于 Post on 2024-9-13 01:19:19 | 只看该作者 Only view this author
wxyhgk 发表于 2024-9-12 23:11
为了避免每次重复的复制粘贴可以这么做

1. 建立 g16-bsub.lsf 脚本

谢谢老师,感激不尽!

123

帖子

0

威望

1294

eV
积分
1417

Level 4 (黑子)

8#
 楼主 Author| 发表于 Post on 2024-9-13 08:28:00 | 只看该作者 Only view this author
本帖最后由 AndrewX 于 2024-9-13 08:31 编辑
AndrewX 发表于 2024-9-13 01:19
谢谢老师,感激不尽!

123

帖子

0

威望

1294

eV
积分
1417

Level 4 (黑子)

9#
 楼主 Author| 发表于 Post on 2024-9-13 08:45:13 | 只看该作者 Only view this author
wxyhgk 发表于 2024-9-12 23:11
为了避免每次重复的复制粘贴可以这么做

1. 建立 g16-bsub.lsf 脚本

老师,我刚尝试了您给的脚本,报错信息如下:
  1. cp: ‘/public/home/users/jxcc001/xiongzhixin/g16-bsub.lsf’ and ‘./g16-bsub.lsf’ are the same file
  2. sed: can't read g-16-bsub.lsf: No such file or directory
  3. -bash: g-16-bsub.lsf: No such file or directory
  4. 任务已提交,输入文件:H2O.gjf
复制代码


劳烦您再看看。

196

帖子

5

威望

1213

eV
积分
1509

Level 5 (御坂)

10#
发表于 Post on 2024-9-13 09:20:48 | 只看该作者 Only view this author
AndrewX 发表于 2024-9-13 08:45
老师,我刚尝试了您给的脚本,报错信息如下:

路径不对吧,给我完整的路径截图什么的

123

帖子

0

威望

1294

eV
积分
1417

Level 4 (黑子)

11#
 楼主 Author| 发表于 Post on 2024-9-13 09:25:58 | 只看该作者 Only view this author
wxyhgk 发表于 2024-9-12 23:11
为了避免每次重复的复制粘贴可以这么做

1. 建立 g16-bsub.lsf 脚本

老师,我仔细阅读了您的代码,结合报错,做了如下修改,
第13行改为:
  1. cp /public/home/users/jxcc001/xiongzhixin/g16-bsub.lsf /public/home/users/jxcc001/g16.lsf
复制代码

PS:/public/home/users/jxcc001路径下的lsf脚本就叫g16.lsf,我理解您的cp操作是将xiongzhixin文件夹的g16-bsub.lsf复制给jxcc001文件夹(即.bashrc所在位置)的g16.lsf


第16和19行改为:
  1. sed -i "s/\$1/$gjf_file/g" g16-bsub.lsf
  2. bsub < g16-bsub.lsf
复制代码

提交任务:
  1. g16-sub H2O.gjf
复制代码

报错如下:
  1. Request aborted by esub. Job not submitted.
  2. 任务已提交,输入文件:H2O.gjf
复制代码

到这里我已经没办法了,请您指教

196

帖子

5

威望

1213

eV
积分
1509

Level 5 (御坂)

12#
发表于 Post on 2024-9-13 09:34:45 | 只看该作者 Only view this author
本帖最后由 wxyhgk 于 2024-9-13 09:39 编辑

我都明确说了只修改一个地方

  1.     cp 特定文件夹/g16-bsub.lsf ./
复制代码

上面代码中的 “特定文件夹” 改成和第一步中一样的文件夹


只修改 “cp 特定文件夹/g16-bsub.lsf ./” 这个代码中的 “特定文件夹” 这一部分



代码解释:


特定文件夹/g16-bsub.lsf 代表 g16-bsub.lsf 所在的路径,只需修改 “特定文件夹
./ 代表当前目录,这个无需修改

123

帖子

0

威望

1294

eV
积分
1417

Level 4 (黑子)

13#
 楼主 Author| 发表于 Post on 2024-9-13 10:03:07 | 只看该作者 Only view this author
wxyhgk 发表于 2024-9-13 09:34
我都明确说了只修改一个地方

抱歉老师,这次我创建了g16-bsub文件夹专门放g16-bsub.lsf文件,pwd显示其绝对路径如下:
  1. jxcc001@ln06 ~/xiongzhixin/g16-bsub> pwd
  2. /public/home/users/jxcc001/xiongzhixin/g16-bsub
复制代码

.bashrc文件代码如下:
  1. # 定义 g16-sub 函数
  2. function g16-sub {
  3.     # 获取传入的 .gjf 文件名
  4.     local gjf_file=$1

  5.     # 检查输入文件是否存在
  6.     if [ ! -f "$gjf_file" ]; then
  7.         echo "错误:输入文件 $gjf_file 不存在!"
  8.         return 1
  9.     fi

  10.     # 复制 bsub.lsf 脚本到当前目录
  11.     cp /public/home/users/jxcc001/xiongzhixin/g16-bsub/g16-bsub.lsf ./

  12.     # 修改 bsub.lsf 脚本,使其接收 $gjf_file 作为参数
  13.     sed -i "s/\$1/$gjf_file/g" g16-bsub.lsf

  14.     # 提交任务
  15.     bsub < g16-bsub.lsf


  16.     echo "任务已提交,输入文件:$gjf_file"
  17. }
复制代码

pwd显示.bashrc文件绝对路径如下:
  1. jxcc001@ln06 ~> pwd
  2. /public/home/users/jxcc001
复制代码

提交任务后结果如下:
  1. jxcc001@ln06 ~/xiongzhixin> g16-sub H2O.gjf
  2. Request aborted by esub. Job not submitted.
  3. 任务已提交,输入文件:H2O.gjf
复制代码

196

帖子

5

威望

1213

eV
积分
1509

Level 5 (御坂)

14#
发表于 Post on 2024-9-13 14:23:43 | 只看该作者 Only view this author
用这个试试吧,不用 cp 了

  1. function g16-sub {
  2.     # 获取传入的 .gjf 文件名
  3.     local gjf_file=$1

  4.     # 生成临时 LSF 脚本
  5.     cat > g16-bsub.lsf << EOF
  6. #!/bin/sh
  7. #BSUB -J g16-job
  8. #BSUB -q snode
  9. #BSUB -n 32
  10. #BSUB -R "span[ptile=32]"
  11. #BSUB -o %J.out
  12. #BSUB -e %J.err

  13. $HOME/g16/g16 $gjf_file
  14. EOF

  15.     # 提交作业
  16.     bsub < g16-bsub.lsf

  17. }
复制代码


直接把这个函数放入到 .bashrc 文件里面

然后使用 source ~/.bashrc 重新加载环境变量,然后就能使用这个函数了,在含有 gjf 的文件夹下面使用

  1. g16-sub 名称.gjf
复制代码


123

帖子

0

威望

1294

eV
积分
1417

Level 4 (黑子)

15#
 楼主 Author| 发表于 Post on 2024-9-13 14:37:36 | 只看该作者 Only view this author
wxyhgk 发表于 2024-9-13 14:23
用这个试试吧,不用 cp 了

老师您辛苦了,我刚试了一下,结果还是不行
  1. jxcc001@ln06 ~/xiongzhixin> g16-sub H2O.gjf
  2. Request aborted by esub. Job not submitted.
复制代码

这样沟通太折腾您了,您如果有空的话,是否介意远程控制我电脑看看是不是我哪里没弄好呢?

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2024-11-24 02:21 , Processed in 0.180994 second(s), 22 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list