小心grep 的buffer
浏览:3732次 出处信息
在统计mysql查询次数时,有如下命令:
while :; do sleep 1; mysql -u user -ppass -h phpor.net -P 3306 -e 'show status like "Questions";'; done |grep Ques | awk '{print $2 - old; old = $2; }'
几秒钟后都看不到结果,怀疑是awk的buffer造成的,于是改写为:
while :; do sleep 1; mysql -u user -ppass -h phpor.net -P 3306 -e 'show status like "Questions";'; done |grep Ques | awk '{print $2 - old; old = $2; fflush();}'
依然不行,于是,把该命令推到后台,使用strace跟踪了一下awk,发现awk没有读到内容,很自然地,跟踪grep吧,发现grep read到内容了,但是总是不write,开始怀疑我的 Ques写错了,仔细比对,也没有问题呀,突然,屏幕上打印出了很多信息,于是,我恍然大悟,应该是grep的buffer搞的鬼,于是man了一下grep,果然有这方面的选项,再次修改如下:
while :; do sleep 1; mysql -u user -ppass -h phpor.net -P 3306 -e 'show status like "Questions";'; done |grep --line-buffered Ques | awk '{print $2 - old; old = $2; fflush();}'
终于OK了
while :; do sleep 1; mysql -u user -ppass -h phpor.net -P 3306 -e 'show status like "Questions";'; done |grep Ques | awk '{print $2 - old; old = $2; }'
几秒钟后都看不到结果,怀疑是awk的buffer造成的,于是改写为:
while :; do sleep 1; mysql -u user -ppass -h phpor.net -P 3306 -e 'show status like "Questions";'; done |grep Ques | awk '{print $2 - old; old = $2; fflush();}'
依然不行,于是,把该命令推到后台,使用strace跟踪了一下awk,发现awk没有读到内容,很自然地,跟踪grep吧,发现grep read到内容了,但是总是不write,开始怀疑我的 Ques写错了,仔细比对,也没有问题呀,突然,屏幕上打印出了很多信息,于是,我恍然大悟,应该是grep的buffer搞的鬼,于是man了一下grep,果然有这方面的选项,再次修改如下:
while :; do sleep 1; mysql -u user -ppass -h phpor.net -P 3306 -e 'show status like "Questions";'; done |grep --line-buffered Ques | awk '{print $2 - old; old = $2; fflush();}'
终于OK了
建议继续学习:
- Buffer和cache的区别是什么? (阅读:7507)
- Linux grep命令用法 (阅读:6638)
- Linux操作系统中内存buffer和cache的区别 (阅读:6002)
- grep 正则表达式选项要记得转义 (阅读:6032)
- 学习Grep,Sed中的正则 (阅读:4815)
- 快速预热Innodb Buffer Pool的方法 (阅读:4637)
- MySQL数据库InnoDB存储引擎 Buffer pool LRU List Flush策略详解 (阅读:4524)
- MySQL数据库InnoDB存储引擎 Insert Buffer实现机制详解 (阅读:4110)
- InnoDB之Dirty Page、Redo log (阅读:4122)
- grep: writing output: Broken pipe in iTerm2 (阅读:3970)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:配置 syslog-ng 的服务器简介
后一篇:tcpdump匹配http头 >>
文章信息
- 作者:phpor <lijunjie1982@yahoo.com.cn> 来源: PHPor 的blog
- 标签: buffer grep
- 发布时间:2012-01-24 14:01:13
建议继续学习
近3天十大热文
-
[882] WordPress插件开发 -- 在插件使用 -
[136] 解决 nginx 反向代理网页首尾出现神秘字 -
[57] 整理了一份招PHP高级工程师的面试题 -
[55] 分享一个JQUERY颜色选择插件 -
[54] Innodb分表太多或者表分区太多,会导致内 -
[54] 用 Jquery 模拟 select -
[54] 如何保证一个程序在单台服务器上只有唯一实例( -
[52] jQuery性能优化指南 -
[52] CloudSMS:免费匿名的云短信 -
[52] 海量小文件存储
