计算化学公社

标题: 用lsf脚本提交g16计算任务的命令怎么写? [打印本页]

作者
Author:
AndrewX    时间: 2024-9-12 20:36
标题: 用lsf脚本提交g16计算任务的命令怎么写?
用的是上海超算,脚本是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小白,请问老师提交任务的命令怎么写?


作者
Author:
pal    时间: 2024-9-12 20:49
这个不是应该看那边的手册么,看着就是bsub g16.lsf吧
作者
Author:
AndrewX    时间: 2024-9-12 21:20
pal 发表于 2024-9-12 20:49
这个不是应该看那边的手册么,看着就是bsub g16.lsf吧

只要写bsub就会显示如下:
Request aborted by esub. Job not submitted.
所以我怀疑是不是我命令写的不够准确,我没有工程师联系方式,我看CSDN上写的lsf的用法,解释的是很详细,但奈何我太小白了,尝试了很多次都不对,所以看看老师能不能直接给出正确的命令方法
作者
Author:
wxyhgk    时间: 2024-9-12 21:39
在 LSF 集群中,bsub 命令用于提交作业。关键在于,bsub 是一个读取标准输入(stdin)的命令。

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

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


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



作者
Author:
AndrewX    时间: 2024-9-12 21:56
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文件夹只有一个输入文件,那在有多个输入文件的时候,我如何指定提交某个输入文件?
作者
Author:
wxyhgk    时间: 2024-9-12 23:11
本帖最后由 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
复制代码
来直接提交任务




作者
Author:
AndrewX    时间: 2024-9-13 01:19
wxyhgk 发表于 2024-9-12 23:11
为了避免每次重复的复制粘贴可以这么做

1. 建立 g16-bsub.lsf 脚本

谢谢老师,感激不尽!
作者
Author:
AndrewX    时间: 2024-9-13 08:28
本帖最后由 AndrewX 于 2024-9-13 08:31 编辑
AndrewX 发表于 2024-9-13 01:19
谢谢老师,感激不尽!


作者
Author:
AndrewX    时间: 2024-9-13 08:45
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
复制代码


劳烦您再看看。

作者
Author:
wxyhgk    时间: 2024-9-13 09:20
AndrewX 发表于 2024-9-13 08:45
老师,我刚尝试了您给的脚本,报错信息如下:

路径不对吧,给我完整的路径截图什么的
作者
Author:
AndrewX    时间: 2024-9-13 09:25
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
复制代码

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


作者
Author:
wxyhgk    时间: 2024-9-13 09:34
本帖最后由 wxyhgk 于 2024-9-13 09:39 编辑

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

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

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


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



代码解释:


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

作者
Author:
AndrewX    时间: 2024-9-13 10:03
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
复制代码

作者
Author:
wxyhgk    时间: 2024-9-13 14:23
用这个试试吧,不用 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
复制代码



作者
Author:
AndrewX    时间: 2024-9-13 14:37
wxyhgk 发表于 2024-9-13 14:23
用这个试试吧,不用 cp 了

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

这样沟通太折腾您了,您如果有空的话,是否介意远程控制我电脑看看是不是我哪里没弄好呢?
作者
Author:
wxyhgk    时间: 2024-9-13 14:56
AndrewX 发表于 2024-9-13 14:37
老师您辛苦了,我刚试了一下,结果还是不行

这样沟通太折腾您了,您如果有空的话,是否介意远程控制我 ...

私聊我,下载 todesk 远程操控,给我设备码和密码




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3