个人常用:
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 端口的统计信息