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

时间:2019-04-20 12:55:53

标签: bash ansible

我正在创建一个简单的流量模拟器:一个每10秒卷曲一次Web服务器的客户端。使用Ansible配置客户端(Debian)和WebServer。当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

1 个答案:

答案 0 :(得分:0)

答案是

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

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

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