命令行单行:快速和肮脏的“字节传输”报告

好的。 所以我们有一个lighttpd服务器抽取我们的图像加载。

它每天login,我们正在考虑将所有这些图像转移到我们的S3帐户以获得更好的加载时间,但是在我们做到这一点之前,我需要至less感觉到我们的转移将会是什么样子。

所以现在我们有标准的lighttp访问日志

accesslog.filename =“/var/log/lighttpd/images.access_log”accesslog.format =“%h%V%u%t \”%r \“%s%b \”%{Referer} i \ “%{用户代理} I \””

所以想从该日志文件转储所有“传输的字节”,很好,很容易。

cat images.access_log | awk'{print $ 10}'

其中踢出类似这样的输出。

19547 6138 17782 8044 345 0 2727 2125 1838 1649 2127 3275 3653 0 16688 

现在 – 我做了一些Googlesearch,也许我忘了一些东西,是否有一个隐藏在Linux的某个地方的命令,将采取所有的输出,只是把它加在一起为我? 所以我可以运行这个命令,并且每天要吐出一个荒谬的大数字,直到我每天获得带宽的基线为止。

—编辑—

我发现https://stackoverflow.com/questions/450799/linux-command-to-sum-integers-one-per-line

反正有awk返回完整的数字,而不是做以下显示?

 cat images.access_log | awk '{print $10}' | awk '{s+=$1} END {print s}' 9.48886e+10 

试试cat images.access_log | awk '{print $10}' | awk '{s+=$1} END {printf "%.f\n",s}' cat images.access_log | awk '{print $10}' | awk '{s+=$1} END {printf "%.f\n",s}'

您可以将这些组合成一个命令。 如果第十列有数字,那么:

 awk '{s+=$10} END {printf("%.d\n",s)}' images.access_log