什么是sleep 0
在 shell 脚本中做什么?我阅读了 sleep 的手册页,它说“延迟指定的时间”,参数 NUMBER 以秒为单位指定这个时间(默认情况下)。
但我看到 ansible 使用sh -c 'echo ~ec2-user && sleep 0'
从每项任务开始。
此外,它在发出的每个远程命令的末尾都使用它。
我在手册页上没有发现任何有关 sleep 0 的特殊情况,并且基于该函数的功能sleep
命令让 sleep 0 没有任何意义。
The sleep
我的服务器上的命令来自GNU coreutils 8.22
经过一段时间的研究后,我学到了一些东西,
- 这是给 ansible 的 SSH 配置,
- 每次 ansible 使用 SSH 执行任务时,它都会使用带有多个选项的 -C 运行 SSH。这些不是剧本或任务的一部分。
- 我在ansible页面上寻找ansible配置here https://docs.ansible.com/ansible/latest/reference_appendices/config.html。检查了所有文件和环境变量,但没有发现与 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
你会看到 Ansible 使用sh -c 'echo ~ec2-user && sleep 0'
从每项任务开始。此外,它在发出的每个远程命令的末尾都使用它。显然这是在您的项目中配置的,这不是正常的 Ansible 行为。
这些命令打印主目录路径如果成功的话 sleep 0
等待零秒并退出。
我怀疑您现在是否需要此代码。
The 引用竞争条件 https://github.com/ansible/ansible/issues/13876这应该是一种解决方法似乎已经过时了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)