Linux中查看日志文件写入速度的四种方法介绍有时候,我们需要查看一个文件,比如日志文件的增长速度,来感受系统的负载,因为一般情况下,日志写入速度越快,系统负载越重。本文将介绍Linux中查看日志增长率的几种方法,如下:使用dd,首先要介绍的是dd,因为dd命令几乎所有主流发行版都自带,不需要额外安装,如下:$尾巴-F应用程序.log|ddof=/dev/nullstatus=progress3875840bytes(3.9MB)copied,8.228797s,471kB/s同上,使用tail-F获取新写入的数据,然后将数据pipe给dd,dd复制数据到/dev/null,其中status=progress用来显示拷贝速度。可以看到我们日志的写入速度是471kB/s。使用pvpv命令可以算是cp有进度,如下:$yuminstall-ypv$tail-Fapp.log|pv>/dev/null2.05MiB0:00:03[330kiB/s][<=>]原理和dd类似,只是命令改为pv。使用cv命令是因为日志数据是由程序(如java)写入的,程序打开的文件信息存放在下面这个伪文件中,如下:/proc//fd:存放的是打开文件描述符号/proc//fdinfo:存放写入文件描述符的偏移量,定期读取这个偏移量就可以知道文件的写入速度。这也是cv命令的实现原理,如下:$yuminstall-ycv$cv-mcjava[1]javaapp.log100.0%(6.1GiB/6.1GiB)390.2KiB/s#其实自Linux上的大部分命令(比如cp)都没有自己的进度查看功能,cv就成了一个很好的补充#比如查看cp复制文件的进度$cpapp.logapp.log.bak&cv-mccp新版本的cv命令已重命名为progress。如果无法安装cv包,可以尝试安装progress包。写一个小脚本通过写一个小脚本,定期观察文件大小,也可以查看文件写入速度,如下:#获取每秒的文件大小,减去上一秒的大小计算速度睡觉1;做\sz=`stat-c%sapp.log`;\numfmt--from=auto--to=iec$((sz-psz));\psz=$sz;\done492K750K370K加上通过watch观察,也可以大致看出速度,如下:watch-d-t-n1duapp.log从一个实例推断其他情况其实想想,如果我们敲一个login某个函数,然后通过grep过滤掉这个日志,那么我们只需要计算输出日志行数,这不就是函数执行的QPS吗!#使用grep过滤日志,tr删除非换行符,所以dd显示的是换行符个数!$尾巴-Fapp.log\|grep--line-buffered'/order/get'\|stdbuf-oLtr-dc'\n'\|ddof=/dev/nullbs=1status=progress151bytes(151B)copied,15.523018s,0.0kB/s在这里,QPS可以计算为10到151/15。由于不超过1000,所以我们看到的是0.0kB/s。如果使用pv命令,会更简单,如下:$tail-Fapp.log\|grep--line-buffered'/order/get'\|pv-l>/dev/null1440:00:03[11.5/s][<=>]pastissue密码学介绍q命令-使用SQL分析文本文件神秘的backlog参数和TCP连接队列mysql时间戳会有吗时区问题?真正理解可重复读事务隔离级别字符编码解决混淆