[转帖] Linux查看日志文件写入速度的4种方法
https://www.cnblogs.com/codelogs/p/16365448.html
简介#
有时,我们需要查看某个文件的增长速度,如日志文件,以此来感受系统的负载情况,因为一般情况下,日志写入越快,说明系统负载越重。
本文就来介绍下Linux中查看日志增长速度的几种方法,如下:
使用dd#
首先要介绍的是dd,因为dd命令几乎所有主流发行版都自带,无需额外安装,如下:
$ tail -F app.log | dd of=/dev/null status=progress
3875840 bytes (3.9 MB) copied, 8.228797 s, 471 kB/s
如上,使用tail -F获取新写入的数据,然后用管道将数据交给dd,dd将数据拷贝到/dev/null,其中status=progress是用来显示拷贝速度的,可见,我们日志的写入速度是471 kB/s。
使用pv#
pv命令可以看做是带进度的cp,如下:
$ yum install -y pv
$ tail -F app.log | pv >/dev/null
2.05MiB 0:00:03 [ 330kiB/s] [ <=> ]
原理与dd类似,不过命令换成了pv。
使用cv命令#
由于日志数据都是程序(如java)写入的,而在如下的伪文件中,存放着程序打开的文件信息,如下:
/proc/<pid>/fd:存放着打开的文件描述符/proc/<pid>/fdinfo:存放着文件描述符写入到的offset
于是定期的读取这个offset就可以知道文件的写入速度了,这也是cv命令的实现原理,如下:
$ yum install -y cv
$ cv -mc java
[ 1] java app.log 100.0% (6.1 GiB / 6.1 GiB) 390.2 KiB/s
# 实际上,由于Linux上大多数命令(如cp)没自带进度查看功能,而cv就成了很好的补充
# 比如查看cp复制文件的进度
$ cp app.log app.log.bak & cv -mc cp
新版cv命令已经改名为progress,安装不到cv包时,可试着安装progress包。
编写小脚本#
通过写一个小脚本,定期观察文件大小,也可查看文件写入速度,如下:
# 每秒获取文件大小,通过减去上一秒的大小,即可计算出速度
while sleep 1; do \
sz=`stat -c %s app.log`; \
numfmt --from=auto --to=iec $((sz-psz)); \
psz=$sz; \
done
492K
750K
370K
通过watch再加上观察,也能大致看出速度,如下:
watch -d -t -n1 du app.log

举一反三#
其实转念一想,如果我们在某个函数中打上日志,然后通过grep过滤出此日志,然后我们只要计算每秒输出的日志行数,这岂不就是函数执行的QPS了!
# 使用grep过滤出日志,tr删除非换行符,所以dd显示的是换行符的个数!
$ tail -F app.log \
| grep --line-buffered '/order/get' \
| stdbuf -oL tr -dc '\n' \
| dd of=/dev/null bs=1 status=progress
151 bytes (151 B) copied, 15.523018 s, 0.0 kB/s
这里可以通过151/15计算出QPS是10,由于没有超过1000,所以看到的是0.0kB/s,如果使用pv命令,会更简单一些,如下:
$ tail -F app.log \
| grep --line-buffered '/order/get' \
| pv -l >/dev/null
144 0:00:03 [11.5 /s] [ <=> ]
往期内容#
密码学入门
q命令-用SQL分析文本文件
神秘的backlog参数与TCP连接队列
mysql的timestamp会存在时区问题?
真正理解可重复读事务隔离级别
字符编码解惑
[转帖] Linux查看日志文件写入速度的4种方法的更多相关文章
- Linux查看日志文件写入速度的4种方法
原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处. 简介 有时,我们需要查看某个文件的增长速度,如日志文件,以此来感受系统的负载情况,因为一般情况下,日志写入越快,说明系统 ...
- [转]linux查看日志文件内容命令
linux查看日志文件内容命令tail.cat.tac.head.echo tail -f test.log你会看到屏幕不断有内容被打印出来. 这时候中断第一个进程Ctrl-C, ---------- ...
- linux查看日志文件内容命令tail、cat、tac、head、echo
linux查看日志文件内容命令tail.cat.tac.head.echo tail -f test.log你会看到屏幕不断有内容被打印出来. 这时候中断第一个进程Ctrl-C, ---------- ...
- linux查看日志文件命令
转:https://www.cnblogs.com/zdz8207/p/linux-log-tail-cat-tac.html linux查看日志文件内容命令tail.cat.tac.head.ech ...
- 【Linux】linux查看日志文件内容命令tail、cat、tac、head、echo
linux查看日志文件内容命令tail.cat.tac.head.echo tail -f test.log你会看到屏幕不断有内容被打印出来. 这时候中断第一个进程Ctrl-C, ---------- ...
- linux查看日志文件内容命令tail、cat、tac、head、echo、vi
linux查看日志文件内容命令tail.cat.tac.head.echo tail -f test.log你会看到屏幕不断有内容被打印出来. 这时候中断第一个进程Ctrl-C, ---------- ...
- linux查看日志文件内容命令tail、cat、tac、head、echo详解
linux查看日志文件内容命令tail.cat.tac.head.echo tail -f test.log你会看到屏幕不断有内容被打印出来. 这时候中断第一个进程Ctrl-C, ---------- ...
- Linux下查看压缩文件内容的 10 种方法
Linux下查看压缩文件内容的 10 种方法 通常来说,我们查看归档或压缩文件的内容,需要先进行解压缩,然后再查看,比较麻烦.今天给大家介绍 10 不同方法,能够让你轻松地在未解压缩的情况下查看归档或 ...
- linux查看日志文件内容命令(面试被常问到的问题)
tail -f test.log 你会看到屏幕不断有内容被打印出来. 这时候中断第一个进程Ctrl-C, linux 如何显示一个文件的某几行(中间几行) 从第3000行开始,显示1000行.即显示3 ...
- Linux 查看日志文件
1. tail命令:从文本文件的尾部开始查看,用于显示文本文件的末尾几行 tail -n filename 指定需要显示多少行 tail -f filename 实时 ...
随机推荐
- Cassandra Gossip协议的二三事儿
摘要:Gossip协议是Cassandra维护各节点状态的一个重要组件,下面我们以Gossip协议三次握手为线索逐步分析Gossip协议源码. Gossip协议是Cassandra维护各节点状态的一个 ...
- 号外!5G+X联创营华为云官网上线,5G 创业春天来了!
摘要:为助力互联网行业客户与伙伴实现降本增效.抓住新趋势,华为云发起"5G+X"联创营计划. 会议室里,产品经理和程序员们唇枪舌战,陷入激烈得讨(zheng)论(chao). 产品 ...
- 5步教你将MRS数据导入DWS
摘要:GaussDB(DWS)支持在相同网络中,配置一个GaussDB(DWS)集群连接到一个MRS集群,然后将数据从HDFS中的文件读取到GaussDB(DWS). MapReduce服务(MapR ...
- CPU高速缓存与极性代码设计
摘要:CPU内置少量的高速缓存的重要性不言而喻,在体积.成本.效率等因素下产生了当今用到的计算机的存储结构. 介绍 cpu缓存的结构 缓存的存取与一致 代码设计的考量 最后 CPU频率太快,其处理速度 ...
- 什么是VXLAN?为什么需要VXLAN?
摘要:本文介绍了什么是VXLAN,以及VXLAN的基本概念和工作原理,包括:为什么需要VXLAN?VXLAN与VLAN之间有啥不同?什么是VTEP?什么是VNI?VXLAN报文是如何封装的?VXLAN ...
- 带你掌握不同平台下,探索JDK源码所需的native方法
摘要:要探索JDK的核心底层源码,那必须掌握native用法.文章中会以"获取系统的默认时区"为例,介绍说明如何查看native对应方法的源码. 本文分享自华为云社区<要探索 ...
- Python 可以满足你任何 API 使用需求
摘要:在本教程中学到的概念和技术将允许您使用自己喜欢的任何 API 进行练习,并使用 Python 来满足您可能拥有的任何 API 使用需求. 本文分享自华为云社区<Python 和 API:读 ...
- ReactJS到React-Native,架构原理概述
React是一个纯JS的UI库,只能干HTML/CSS/JS 提供的Web服务(新的H5 API不一定支持), React-Native厉害在于它能打通JS和Native Code, 让JS能够调用丰 ...
- CentOS 硬盘扩容
首先在虚机内将硬盘空间扩大,Hyper-V 需要将检查点删除 查看物理卷和卷组,并将物理卷加入到卷组 lvextend -l +100%FREE /dev/centos/root #将剩余空间添 ...
- StringBuilder 线程不安全,到底哪里不安全?
StringBuilder 线程不安全,到底哪里不安全? 在Java中,字符串拼接是一个非常常见的操作,而对于频繁变动的字符串内容,使用StringBuilder是一个性能优化的选择.但是,Strin ...