csdnyasin 2020-05-01
本文非单纯网上介绍 Linux 命令及参数的雷同文章,而是真正在实际工作中能派上用场的 Linux 实用技巧。主要介绍日志排查相关的技巧,捎带常见的其他 Linux 操作以及 vim 技巧。
本文首发于个人博客:http://nullpointer.pw/linux-command.html
在日常工作中,经常需要在服务器上通过查看日志的方式来定位 bug 问题,掌握一定的日志排查技巧则是很有必要的。明明有些可以通过很基础的命令就可以实现,但网上有些人偏偏喜欢炫技,故作高深弄出一些特别复杂的用法来完成,其实真的没有那种必要。本文只讲最常用实用的用法。
笔者截取了一些日志作为示例,以供读者练习。
Tips: 命令中包含于双引号 " " 中的都是关键字
示例日志点我下载
grep "1584345069121" info.log
grep "1584345069121" info.log -C5 ``` 3. 根据关键字查找日志,并显示查找结果后 (After)5 行日志 ```sh grep "1584345069121" info.log -A5 ``` 4. 根据关键字查找日志,并显示查找结果前 (Before)5 行日志 ```sh grep "1584345069121" info.log -B5 ``` 5. 根据多个关键字查找日志,多个关键字为或关系,满足其中一个条件则匹配,关键字之间用`\|`分隔,表示或 ```sh grep "1584345069121\|1584345066236" info.log ``` 6. 根据多个关键字查找日志,需要满足其中全部条件才匹配 ```sh grep "76953334" info.log | grep "1584349673402" ``` 7. 查找不包含关键字的日志,支持多个关键字,关键字之间用`\|`分隔,表示或 ```sh grep -v "handle" info.log ``` 8. 根据关键字 A 查找,并且过滤包含关键字 B 的日志 ```sh grep "76953334" info.log | grep -v "handle"
除了以上在静态日志中查找之外,有时候调试需要看指定日志,而日志又存在滚动刷新较快的情况,此时就可以通过 grep
相关技巧对刷新的滚动日志进行过滤筛选,来达到我们的目的。
tail -300f info.log | grep "76953334"
tail -300f info.log | grep "76953334" | grep -v "2450"
压缩解压也是比较常用的一些操作,常见的压缩包就是tar.gz
与zip
两种,下文分别介绍这两种格式的压缩与解压方式。
tar zcvf tempdir/ fileName.tar.gz
tar zxvf fileName.tar.gz
zip -r fileName.zip tempdir/
unzip -o fileName.zip -d tempdir2/
工作中偶尔会需要看一下应用进程的信息,比如什么时候启动的,启动了多久这些信息,以下命令可以告诉你答案。
netstat -l | grep 8080
ps -p 8080 -o lstart
ps -p 8080 -o etime
列举了几个 VIM 小技巧,批量注释行、替换操作
批量注释行
批量取消注释行
搜索并替换关键字 (INFO 替换为 ERROR)
全文替换: vim 正常模式下 :%s/INFO/ERROR
回车确定
当前行替换:vim 正常模式下 :s/INFO/ERROR
回车确定
拷贝与清空全文内容
拷贝全文内容:vim 正常模式下 :%y
清空全文内容:vim 正常模式下 :%d
/home
下开始向下遍历查找名称包含 nginx.conf
的文件find /home -name nginx.conf
df -h
du -h --max-depth=1
笔者写的一些在 Spring 容器中关于设计模式的实践文章