个人常用:
1.tail -f 日志 |grep “参数” --color (tail -f payroute.20190613.log |grep “payType” --color)
2.grep -E “123|abc” app.log --color 查询日志文件app.log中包含 关键字 123 或 包含 关键字 abc 的行。(带颜色)(grep -E “payType|tradeno” payroute.20190613.log --color)
0 前言
(1)命令的尾部添加 --color 或者 --color=auto 可以使关键字带颜色,很清晰。
1 linux日志查找常用命令
1.1 cat、zcat
cat -n app.log | grep “error”:查询日志中含有某个关键字error的信息,显示行号。
cat -n app.log | grep “error” --color:查询日志中含有某个关键字error的信息,显示行号,带颜色的。
cat -n test.log | tail -n +92 | head -n 20 :表示查询92行之后的日志;表示在前面的查询结果里再查前20条记录。
cat -n app.log |grep “error” | more:使用more和less命令分页查看日志,空格键翻页。
cat -n app.log |grep “error” > temp.txt:把日志保存到文件。
zcat shopdiy-cpc-job01.jd__shopdiy-cpc-job.warn.log-2019-03-25-1.log.gz | gerp “hotelFriendCircle poi”:直接查找压缩包里的日志内容
1.2 grep
grep -E “123|abc” app.log(grep -E “123|abc” app.log --color):查询日志文件app.log中包含 关键字 123 或 包含 关键字 abc 的行。(带颜色)
grep -nE “123|abc” app.log:查询日志文件app.log中包含 关键字 123 或 包含 关键字 abc 的行,显示行号。
grep “此次共实际刷数据” app.log:查看日志中的关键字。
grep “此次共实际刷数据” app.log | more:查询关键字,并且按空格键翻页。
grep -i “magic” app.log :不分大小写的搜索匹配magic。默认情况下是区分大小写的。
grep -w “magic” app.log :匹配整个单词而不是字符串的一部分(如匹配“magic”,而不是“magical”)。
grep -E “123” app.log:显示app.log中含有关键字"123"的行内容。
grep -E -A5 “123” app.log:显示app.log中含有关键字"123"的行内容,以及之后的5行内容。
grep -E -B5 “123” app.log:显示app.log中含有关键字"123"的行内容,以及之前的5行内容。
grep -E -C5 “123” app.log:显示app.log中含有关键字"123"的行内容,以及之前之后的各5行内容。
1.3 head【头正尾负】
head -n 10 app.log(head -n +10 app.log、head 10 app.log):查看日志中的头10行日志。
head -n -10 app.log:查看日志中除了尾10行之外的所有日志。
1.4 tail【头正尾负】
tail -n 10 app.log(tail -n -10 app.log、tail -10 app.log):查看日志中的尾10行日志。
tail -n +10 app.log:查看日志中除了头10行之外的所有日志。
tail -f app.log:实时查看日志信息。
tail -f app.log |grep “关键词”:实时查看日志中含有某个关键词的信息。
tail -f app.log |grep -A3 “关键词”:实时查看日志中含有某个关键词的信息,该行的前面和后面各多显示3行。比如:tail -f app.log |grep -A3 “此次共实际刷数据”。
tail -f app.log |grep “mtUserScore” --color:实时查看app.log日志中的含有关键词“mtUserScore”的日志信息,并且彩色打印。
tail -n 20 app.log |grep --color “此次共实际刷数据”:查看日志的最后20行并且搜索关键字。
tail -fn 100 app.log:循环实时查看最后100行的记录。
tail -fn 100 app.log |grep --color “此次共实际刷数据”:循环查看最后100行的记录,并且查找关键字。
tail -500 /data/applogs/tomcat/catalina.out:查看Tomcat错误日志。
1.5 ps
ps -ef |grep java:查看Java进程。
ps -ef |grep tomcat:查看Tomcat进程。
curl www.baidu.com:查看url能不能使用。
ps -ef | grep 8080:查看端口号8080被哪个进程占用。
ps -ef | grep redis:查看已经启动所有进程中与字符“redis”相关的进程。
ps -ef | grep java:查看已经启动所有进程中与字符“java”相关的进程。
ping 192.168.1.122:查看本机能否和IP=192.168.1.122的主机连通。
scp -r redis-3.0.0/ 192.168.1.122:/usr/local:如果可以连通,则可以远程传输文件。
cp redis.conf /usr/local/redis-cluster/7001:复制文件到指定文件夹。
1.6 Nginx日志查询
应用日志记录的位置:/data/applogs/shopdiy-whale-web/logs
tail -f app.log:动态查看应用日志。
应用Nginx日志记录的位置,HTTP请求时长结果查看:/data/applogs/nginx
tail -f shopdiy-whale-web.access.log:通过访问页面来动态查看Nginx日志。
1.7 压缩包的解压-压缩
gz压缩:app.log-2018-09-22-1.log 文件,执行:gzip app.log-2018-09-22-1.log,被压缩成 app.log-2018-09-22-1.log.gz
gz接压缩:app.log-2018-09-22-1.log.gz 文件,执行:gzip -d app.log-2018-09-22-1.log.gz,被解压成 app.log-2018-09-22-1.log
gzip -dc app.log.2018-01-11.gz |grep “此次共实际刷数据” | more:不解压直接查看压缩包中的“关键词”信息
1.8 sed
这个命令可以查找日志文件特定的一段 , 也可以根据时间的一个范围查询。
sed -n “5,10p” app.log:按照行数——查看日志第5到第10行。
sed -n “/2018-04-08 09:40:53.374/,/2018-04-08 10:21:04.812/p” express.log | grep “此次共实际刷数据” :按照时间段——查看两个时间之间的日志,并且显示关键字。其中,时间点一定要在日志中存在,可用:grep -E “2018-04-08 09:40:53.374” app.log --color:来查看时间点是不是存在日志中,带颜色。
1.9 lsof (list open files)
lsof -i tcp:查看TCP连接的端口号使用情况
lsof -i udp:查看UDP连接的端口号使用情况
lsof -i tcp:58528 :(port替换成端口号,比如6379)可以查看该端口被什么程序占用,并显示PID,方便kill
lsof -i udp:58529 :(port替换成端口号,比如6379)可以查看该端口被什么程序占用,并显示PID,方便kill
kill -9 518:结束进程PID号为518的进程。
1.10 netstat
netstat -a:列出所有端口
netstat -at :列出所有tcp端口
netstat -au:列出所有udp端口
netstat -l :只显示监听端口
netstat -lt :只列出所有监听tcp端口
netstat -lu :只列出所有监听udp端口
netstat -st:显示 TCP 端口的统计信息
netstat -su:显示 UDP 端口的统计信息