bash - sleep 0 在 shell 脚本中做了什么,如果它在 ansible SSH 配置中用于在每个命令之后附加,它会做什么?
问题描述
在 shell 脚本中做了什么sleep 0
?我阅读了 sleep 的手册页,上面写着“延迟指定的时间”,参数 NUMBER 以 SECONDS 指定这个时间(默认情况下)。
但我看到 ansible 使用sh -c 'echo ~ec2-user && sleep 0'
从每个任务开始。此外,它会在它触发的每个远程命令的末尾使用它。
我没有在手册页上发现任何关于 sleep 0 的特殊情况,并且基于sleep
命令的功能,让 sleep 0 没有任何意义。
sleep
我服务器上的命令来自GNU coreutils 8.22
在研究了一段时间之后,我学到了一些东西,
- 这是给 ansible 的 SSH 配置,
- 每次使用 SSH 执行任务时,它都使用 -C 和多个选项运行 SSH。这些不是剧本或任务的一部分。
- 我在这里的 ansible 页面上查找了 ansible 配置。检查了所有文件和环境变量,但没有发现与 ssh 相关的内容
- 检查
/etc/ssh/ssh_config
没有我在 SSH 中看到的 ansible 正在执行的所有参数/参数 - 在清单中也提到了主机,就像这样 ansible_host=localhost ansible_user=ec2-user
例如,当 ansible 执行任何任务时,在开头的日志行:
<localhost> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="ec2-user"' -o C
onnectTimeout=120 -o ControlPath=/home/ec2-user/.ansible/cp/6bc5a26ee4 localhost '/bin/sh -c '"'"'echo ~ec2-user && sleep 0'"'"''
<localhost> (0, '/home/ec2-user\n', '')
<localhost> ESTABLISH SSH CONNECTION FOR USER: ec2-user
我正在执行由一个团队编写的 ansible 剧本,该团队中没有我可以与之交谈的人。我正在努力寻找 Ansible 在哪里使用它在每个 SSH 中使用的所有这些参数,以及为什么要使用它sleep 0
解决方案
推荐阅读
- php - 隐式路由模型绑定
- node.js - 使用 Nodejs Sequelize 避免竞争条件
- regex - 在 bash 的 sed 命令中使用感叹号
- c# - .NET 编写事件处理程序以捕获本地异常
- import - 系统如何响应 ITIM 5.1 到 ISIM 6.0 升级后的待处理请求 DB2 转储
- android - 多屏幕支持的最佳布局配置
- java - 从 IOB 注释训练集中训练命名实体识别器模型的文档
- spring - 在 thyeleaf 中提交表格
- c++ - 如何使用 msbuild 从 OBJS 生成导入 LIB
- c - 2nd order DE Runge Kutta 4 on C