sleep 0在shell脚本中做什么?如果它在ansible SSH配置中用于每个命令后追加,它会做什么?

szqfcxe2  于 12个月前  发布在  Shell
关注(0)|答案(1)|浏览(112)

sleep 0在shell脚本中做什么?我读了睡眠的手册页,它说“延迟指定的时间”,参数NUMBER以秒为单位指定这个时间(默认情况下)。
但我看到ansible使用sh -c 'echo ~ec2-user && sleep 0'来启动每个任务。此外,它在每个远程命令的末尾使用它。
我在手册页上没有发现任何关于sleep 0的特殊情况,基于sleep命令的功能,使用sleep 0没有任何意义。
服务器上的sleep命令来自GNU coreutils 8.22
在研究了一段时间之后,我学到了一些东西,
1.这是给ansible的SSH配置,
1.每次ansible使用SSH执行任务时,它都使用-C和多个选项运行SSH。这些不是剧本或任务的一部分。
1.我在ansible页面here上寻找ansible配置。检查所有文件和环境变量,但没有发现任何与ssh相关的内容
1.在/etc/ssh/ssh_config中,并不是所有的参数/参数都是我在SSH中看到的,ansible正在做的。
1.在清单中也提到了主机,就像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

wko9yo5t

wko9yo5t1#

Ansible使用sh -c 'echo ~ec2-user && sleep 0'启动每个任务。此外,它在每个远程命令的末尾使用它。显然这是在你的项目中配置的,这不是正常的Ansible行为。
这些命令打印主目录路径**,如果成功,**sleep 0等待0秒并退出。

我怀疑你现在需要这个代码。

reference to the race-condition,这应该是一个解决方案,似乎过时了。

相关问题