Bash:while循环中的变量声明,用于获取最新数据,但不起作用

Bash:while循环中的变量声明,用于获取最新数据,但不起作用,bash,prometheus,Bash,Prometheus,对于测试,我想测试向本地9090端口发送数据。我使用while循环来实现这一点。但是while循环没有被触发,脚本被困在while循环中的变量处。我做错了什么 代码: #!/bin/bash nc -l -p 9090 & z=$(ps aux) echo "ps done" while true do var=$var$(awk '{print "cpu_usage{process=\""$11"\", pid=\

对于测试,我想测试向本地9090端口发送数据。我使用while循环来实现这一点。但是while循环没有被触发,脚本被困在while循环中的变量处。我做错了什么

代码:

#!/bin/bash
nc -l -p 9090 &
z=$(ps aux)
echo "ps done"
while true 
do
var=$var$(awk '{print "cpu_usage{process=\""$11"\", pid=\""$2"\"}", $3z}');
echo "var done"  ---> Not getting here
curl -X POST -H  "Content-Type: text/plain" --data "$var" http://localhost:9090/metrics ;
sleep 10;
done
这条线路不通

var=$var$(awk '{print "cpu_usage{process=\""$11"\", pid=\""$2"\"}", $3z}');
你知道为什么吗?谢谢。:-)


是否有更好的方法每5-10秒发送一次此类统计数据。:-)

awk命令没有输入。它通常是一个文件或变量,通过awk正在标准输入中等待某些内容。您可能想做一些类似的事情:var=$(ps aux | awk'{print“cpu\u用法{process=\''11'\',pid=\''2'\''}',3z}),我会避免使用ps aux。您还可以通过使用本机ps格式等避免使用awk。。。。ps-eo'cpu_使用{process=“%a”,pid=“%p”}%C'