Bash 在终端上调用脚本(甚至是微不足道的脚本)时卡住

Bash Scripts (even trivial ones) stuck when invoked on the terminal

我有一台服务器,我们在上面执行多个 bash 脚本来自动执行任务(例如将文件复制到其他服务器、启动备份等)。它已经工作了几个月,但今天开始变得不稳定。

发生了什么事,脚本有一段时间 'stuck',然后 运行 就没问题了。如果我在终端上一个一个地复制并粘贴命令,它就可以工作,所以脚本本身不是什么东西,但它似乎阻止了 bash 解释器(如果这有意义的话)。

另一个奇怪的行为是同一个脚本最终 运行 没有问题。但是,由于我们使用 Jenkins 进行自动化,因此每次启动新作业时都会重新创建脚本。

例如,我创建了一个新脚本,tst.sh,它只包含一个回显。如果我尝试直接 运行 它,它会卡住一段时间。我尝试用 bash -xeav 调试它,但它没有打印我的脚本代码,这意味着它没有读取它。一段时间后,脚本 运行,没有任何变化。但是,创建一个具有相同内容和不同名称的脚本会再次出现该问题。

我的假设是有什么东西阻止了脚本被读取,只是等到任何阻止它完成的东西。但是,我没有看到任何进程持有该文件,这意味着它可能不是这样。

还有什么我应该尝试的吗?我在 bash 方面的知识非常基础,所以我不知道是否有标志可以帮助我在内部调试它。

我正在使用 RHEL 8.85,bash 版本是 GNU bash,版本 4.4.20(1)-release (x86_64-redhat-linux-gnu)

根据评论更新

  1. 服务器资源还好,暂时没有使用。
  2. 服务器的硬件也工作正常,操作团队至少没有联系任何已知问题
  3. 重新启动使问题消失,但是,它在 5 分钟左右后再次出现
  4. 这个问题似乎与 bash 配置文件等无关。

问题已解决,将此作为答案发布,以便人们可以更快地找到它。

事实证明,正如多个用户在评论中所建议的那样(感谢所有人!!),问题是由安全监视器引起的,它分析了每个已执行的脚本。该团队为此更改了一些设置以防止它发生,目前正在工作。