Linux 查看日志常用命令(汇总)

平时最多定、排查Linux服务器各类问题,最直接的就是看日志,了解常用的查看日志命令,可以快速定位问题、提高工作效率!!!

一、more

一页一页的显示档案内容

二、less(推荐)

与more类似,但是比more强大,支持前后翻页

1
2
3
4
5
6
7
8
9
10
分页(向前、向后翻页)查看文件内容
基本命令:less /apps/srv/instance/test-courselive.knowbox.cn/logs/course.log

g 跳到第一行
G 跳到最后一行
b 向上滚动一屏
d 向下滚动半屏
f 向下滚一屏
? 需要查找的内容,回车查找
q 退出less

三、head

只看头几行

1
2
eg:显示user.log文件前10
head -n 10 /etc/user.log

四、tail

只看尾巴几行(与head相反)

1
2
3
-n  是显示多少行
-f 实时显示默认10
tail -100f test.log 实时监控100行日志

五、cat

由第一行开始显示档案内容;
tac倒序查看内容(与cat相反)
1
2
-f 循环读取
-n 显示行数

六、应用场景

  • 场景一、实时查看

    1
    tail -f /apps/srv/instance/courselive.knowbox.cn/logs/course.log
  • 场景二、按照时间段查找

    1
    sed -n '/2018-12-06 11:57:10/,/2018-12-06 11:59:10/p'  /apps/srv/instance/courselive.knowbox.cn/logs/course.log
  • 场景三、 按照关键词查找最新(倒序)

1
2
3
tac /apps/srv/instance/courselive.knowbox.cn/logs/course.log |grep -m2 -C10 'buyClassHandle'
grep -m:搜索的结果个数设置
-C(大写):搜索结果的旁边n行输
  • 场景四、实时查看底部即最新100条日志记录
1
2
3
tail user.log -n 300 -f grep 'bug' | tail user.log -C 10   

查看字符‘nick’前后10条日志记录, 大写C

场景五、按照关键词翻页(less\more)查找

1
cat -n test.log |grep "jiang" |more
  • 场景六、xxx.txt将其保存到文件中,到时可以拿下这个文件分析.如:
1
cat -n test.log |grep "jiang"  >xxx.txt
  • 场景七、实时查看底部即最新100条日志记录
1
2
3
tail user.log -n 300 -f grep 'bug' | tail user.log -C 10   

查看字符‘nick’前后10条日志记录, 大写C
  • 场景八、在指定|当前目录下多个文件中查询包含某关键字文件的方法
1
2
3
4
5
6
7
8
9
10
11
12
-- 执行目录所有文件
find /apps/srv/instance/test-courselive.knowbox.cn/logs/ -name \* -type f -print | xargs grep -l '63046883581440'

-- 指定某些文件后缀包含某关键字
find -name 'course*' | xargs grep -l '63046883581440'

-- 指定某些文件后缀查询包含某关键字,并将结果转存debug.log文件中
find -name 'course*' | xargs grep -l '63046883581440' > debug.log


-l 查看对应文件
-C 查看文件内容上下行数

  • 场景九、grep命令的:或操作、与操作
1
2
3
4
5
-- 或操作
cat /apps/srv/instance/courselive.knowbox.cn/logs/course.log | egrep -m3 -C1 '10000000000418|108469806187008'

-- 与操作
cat /apps/srv/instance/courselive.knowbox.cn/logs/course.log | grep '108469806187008'| grep '118961449773568'
  • 场景十、服务器文件下载、上传
1
2
3
4
5
6
-- 下载
sz /apps/srv/instance/courselive.knowbox.cn/logs/course.log


-- 上传
rz 选择本地目录
  • 场景11、查询linux服务器有哪些IP在连接
1
2
3
 netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
-- 查找请求数请20个IP(常用于查找攻来源)
netstat -anlp|grep 80|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20
  • 场景12、Linux命令分析当前的链接状况
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 通过watch可以一直监控
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

LAST_ACK 5 #关闭一个TCP连接需要从两个方向上分别进行关闭,双方都是通过发送FIN来表示单方向数据的关闭,当通信双方发送了最后一个FIN的时候,发送方此时处于LAST_ACK状态,当发送方收到对方的确认(Fin的Ack确认)后才真正关闭整个TCP连接;

SYN_RECV 30 # 表示正在等待处理的请求数;

ESTABLISHED 1597 # 表示正常数据传输状态;

FIN_WAIT1 51 # 表示server端主动要求关闭tcp连接;

FIN_WAIT2 504 # 表示客户端中断连接;

TIME_WAIT 1057 # 表示处理完毕,等待超时结束的请求数;
  • 场景13、日常了解
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36

    查看进程

    ps -ef | grep + 进程名,一般是项目名
    #可以过滤多个文件夹名字,比如:
    ps -ef | grep java | grep cmis

    3.终止线程
    kill -9 19979
    终止线程号位19979的线程
    4.查看文件,包含隐藏文件
    ls -al
    5.当前工作目录
    pwd
    6.复制文件包括其子文件到自定目录
    cp -r sourceFolder targetFolder
    7.创建目录
    mkdir newfolder
    8.删除目录(此目录是空目录)
    rmdir deleteEmptyFolder
    9.删除文件包括其子文件
    rm -rf deleteFile
    10.移动文件
    mv /temp/movefile /targetFolder
    扩展重命名 mv oldNameFile newNameFile
    11.切换用户
    su -username
    12.修改文件权限
    chmod 777 file.java
    //file.java的权限-rwxrwxrwx,r表示读、w表示写、x表示可执行
    13.压缩文件
    tar -czf test.tar.gz /test1 /test2
    14.列出压缩文件列表
    tar -tzf test.tar.gz
    15.解压文件
    tar -xvzf test.tar.gz

相关参考


评论