作为服务端的程序员,我们可能会经常需要通过查找日志来分析定位问题 。由一个常见的场景引出下面要讲的内容,在一个目录下查找一个待匹配的字符串所在的行,来定位问题 。很容易可以用一个命令搞定:
find . -name "*log*" |xargs grep "待匹配的字符串" {} >> res.txt
使用26个文件,每个大概300M,用time命令统计耗时6S,测试结果:
real 0m6.113suser 0m2.096ssys 0m4.003s
之前可能会写下这样的命令,也能work,但是从没想过其实还是可以加速的 。无意间看到大牛的分享,于是决定仔细研究下 。
- xargs —help 查看解释
-n, --max-args=MAX-ARGSUse at most MAX-ARGS arguments per commandline-P, --max-procs=MAX-PROCSRun up to max-procs processes at a time
【xargs命令如何加速】其中对于加速非常关键的两个参数-n -P- 修改上面的命令
find . -name "*log*" |xargs grep -n 10 -P 10 "待匹配的字符串" {} >> res.txt
- 继续测试
real 0m1.716suser 0m2.153ssys 0m3.897s
- 总结
- 如果不加-n,实测-P不起作用,还是相当于单进程执行 。
- -P并不是越多越快,理论上只要小于机器的核心数会更快,但实际并不是(没理解) 。
推荐阅读
- 什么是子域名?如何设置子域名解析?
- 手机怎么联网北斗,手机如何连接北斗导航系统-
- 电脑关闭系统还原功能方法 如何关闭系统还原
- 董卓的实力到底如何? 董卓是怎么死的
- Win10系统如何切换桌面 切换桌面
- 怎样祛除脸上的疤痕 脸上疤痕怎样去掉?
- 电脑如何设置开机密码的图文教程 电脑怎样设置开机密码
- 新手应该怎么挑选红酒? 怎么选红酒
- 桂花的嫁接方法 如何嫁接桂花
- 秋天如何预防上火? 秋天怎样预防上火有哪些方法