gru*_*ech 3 linux bash command-line-interface
好吧。所以我们有一个 lighttpd 服务器来加载我们的图像。
它每天记录,我们正在考虑将所有这些图像移动到我们的 S3 帐户以缩短加载时间,但在我们这样做之前,我至少需要“感觉”一下我们的传输会是什么样子。
所以现在我们有标准的 lighttp 访问日志
accesslog.filename = "/var/log/lighttpd/images.access_log" accesslog.format = "%h %V %u %t \"%r\" %>s %b \"%{Referer}i\" \ "%{User-Agent}i\""
所以想要从该日志文件中转储所有“传输的字节”,很好很容易。
cat images.access_log | awk '{print $10}'
这会产生与此类似的输出。
19547
6138
17782
8044
345
0
2727
2125
1838
1649
2127
3275
3653
0
16688
Run Code Online (Sandbox Code Playgroud)
现在 - 我已经做了一些谷歌搜索,也许我忘记了一些东西,是否有一个命令隐藏在 linux 中的某个地方,它将获取所有输出,然后为我将它们全部添加在一起?所以我可以运行这个命令,让它每天吐出一个非常大的数字,直到我得到每天带宽的基线?
- - 编辑 - -
无论如何要让 awk 返回完整数字,而不是执行下面显示的操作?
cat images.access_log | awk '{print $10}' | awk '{s+=$1} END {print s}'
9.48886e+10
Run Code Online (Sandbox Code Playgroud)
您可以将这些组合成一个命令。如果第 10 列有数字,则:
awk '{s+=$10} END {printf("%.d\n",s)}' images.access_log
Run Code Online (Sandbox Code Playgroud)