gpt4 book ai didi

bash - 尽管有 shebang,qsub 仍在 csh 中执行我的 bash 脚本

转载 作者:行者123 更新时间:2023-11-29 09:42:28 28 4
gpt4 key购买 nike

我想向我大学的 Sungrid 计算集群提交一个 bash 脚本,以循环运行可执行文件。当我登录到服务器时,我在 bash 中:

$ echo $SHELL
/bin/bash

我在传递给 qsub 的脚本顶部包含了一个 bash shebang:

$ cat shell_sub
#!/bin/bash
#$ -N bSS_s13
#$ -o logs/bSS_s13.log
#$ -j y
#$ -cwd

echo $SHELL > shell.txt

但是当我提交上面的脚本时:

qsub shell_sub

它改为在 csh 中执行:

$ cat shell.txt
/bin/csh

如何强制 qsub 使用 bash 而不是 csh 来执行我的脚本?

最佳答案

很可能您的队列配置了 shell_start_mode 作为 posix_compliant 并且定义的 shell 列为 /bin/csh(这是默认值)。要检查这个:

$ qconf -sq <name-of-queue> | grep shell
shell /bin/bash
shell_start_mode unix_behavior

如果您不知道队列的名称,可能是 all.q

  • 如果 shell_start_modeposix_compliant,则忽略 shebang 行并且作业(如果它不是以二进制形式提交:-b y)从 shell 设置定义的 shell 开始。
    • 为什么?来自man page :“POSIX 不认为第一个脚本行注释,例如 '#!/bin/csh' 是重要的。批处理排队系统 (P1003.2d) 的 POSIX 标准因此要求兼容的排队系统忽略这些行,但使用用户而是指定或配置默认命令解释器。”
  • 如果 shell_start_modeunix_behavior,则 shebang 行用于确定作业的 shell。

您可以要求您的管理员考虑更改队列设置。

关于bash - 尽管有 shebang,qsub 仍在 csh 中执行我的 bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42637131/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com