如何从Ansible-playbook的bash-script启动后台循环

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从Ansible-playbook的bash-script启动后台循环相关的知识,希望对你有一定的参考价值。

我正在创建一个简单的流量模拟器:一个每10秒钟卷曲一次Web服务器的客户端。客户端(Debian)和WebServer使用Ansible进行配置。 Ansible-SSH连接关闭后,后台循环将关闭。

起初我启动了命令:

$ while true; do curl python_webserver:8000; sleep10; done </dev/null >/dev/null 2>&1 &;
$ disown

它可以在Bash中正常工作,但是如果我将它放入脚本中,它会在ssh-connection端退出。我尝试了一些其他解决方案,比如使用:

$ nohup [command]
$ nohup /bin/bash -c '[command]

或者使用“deamonize”但没有任何效果。我没有找到任何在线作品;也许我错过了一些重要的东西。 (写pid很重要,但不是根本)

我在这里的剧本,也许有一个很大的新手错误。

#!/bin/bash
PORT=8000
while true; do
    curl python_webserver:$PORT
    sleep 10
done >/dev/null 2>&1 &
ANSIBLE_CLIENT_PID=$!
echo $ANSIBLE_CLIENT_PID >> /tmp/ANSIBLE_PID.txt
disown
答案

答案是

nohup sh -c 'while true; do curl python_webserver:'"$PORT"'; sleep 10; done >/dev/null 2>&1' &

可能我用引号搞错了。谢谢大家的帮助

(特别是Kamil Cuk的解决方案)

以上是关于如何从Ansible-playbook的bash-script启动后台循环的主要内容,如果未能解决你的问题,请参考以下文章

ansible-playbook未找到命令怎么解决

Ansible-playbook如何获取ip?

如何获取 vsphere_virtual_machine 的 IP 来运行 ansible-playbook?

利用ansible-playbook从测试环境获取tomcat中java项目新版本发布到生产环境

利用ansible-playbook从测试环境获取tomcat中java项目新版本发布到生产环境

如何在 python3.5 中以编程方式运行 ansible-playbook 时设置额外的变量?(Ansible 版本 - 2.8)