generate_data.sh脚本文件代码解释

generate_data.sh脚本文件代码说明

文件内容

#!/bin/bash
set -e
while true;do
awk -v now=\`date +%s\` -v host=\`hostname\` '{print "put proc.loadavg.1m"" "now" "$1" ""host="host;
print "put proc.loadavg.5m"" "now" "$3" ""host="host}' /proc/loadavg 
  sleep 5
done | nc -w 10 127.0.0.1 4242

#!/bin/bash表示告诉操作系统,用/bin/bash来解析这个文件。
set -e这句语句告诉bash如果任何语句的执行结果不是true则应该退出。这样的好处是防止错误像滚雪球般变大导致一个致命的错误,而这些错误本应该在之前就被处理掉。如果要增加可读性,可以使用set -o errexit,它的作用与set -e相同。
awk -v now=`date +%s` -v host=`hostname` '{print "put proc.loadavg.1m"" "now" "$1" ""host="host; print "put proc.loadavg.5m"" "now" "$3" ""host="host}' /proc/loadavg这句话需要先解释awk命令。
awk命令解释
awk命令详细解析请参考此链接 https://blog.csdn.net/liang5603/article/details/80855386。
PS:个人觉得图文并茂,写得非常好!

awk -v now=`date +%s` -v host=`hostname`表示把当前时间(以秒为单位,date + %s表示将当前时间转成以秒表示)赋值给date,把当前主机名赋值给host。
'{print "put proc.loadavg.1m"" "now" "$1" ""host="host;print "put proc.loadavg.5m"" "now" "$2" ""host="host}'
这是两个脚本,用到了前面定义的变量,nowhost。同时 $1$2 表示后面文件每一行当中的第1和第2个字段(默认是用空格分割的,因为 /porc/loadavg文件里只有一行文件,且每个字段以空格分隔开,所以没指定特定分隔符)。$0表示整行内容。我们注意到awk是按行来处理文件的。

下图是对 /proc/loavavg 文件的详细解释。
在这里插入图片描述
sleep 5表示睡眠5秒钟,再执行下一次while循环。
| nc -w 10 127.0.0.1 4242表示利用管道命令,将前面的输出,也即print .....的内容,当做nc命令的输入。
nc -w 10 127.0.0.1 4242表示监听127.0.0.1:424210秒钟,超过10秒就关闭,并将前面的print....数据发送到监听的端口,每一次while循环结束都需要监听10秒钟。
nc命令讲解请参考链接:https://blog.csdn.net/freeking101/article/details/53289198。
PS:个人觉得讲得不错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值