day006
文章目录
- 1. 故障案例
- 2. 适合查看日志的命令
- 2.1 tail/head
- 2.2 grep 行过滤器
- 2.3 less/more
- 3. 日志分析必备知识
- 3.1 wc
- 3.2 管道符:|
- 4. 思维导图
1. 故障案例
- 某开发人员在测试环境中使用vim编辑10g日志文件,导致系统内存不足。
- 原因:vim打开文件,会把文件加载到内存中。若文件过大会导致内存溢出。
- 避免方法:
1.查看日志不要用cat和vim
2.推荐使用tail/head,less/more,grep
2. 适合查看日志的命令
2.1 tail/head
- tail:尾部,查看文件末尾的内容,默认是10行
- head:头部,查看文件开头的内容,默认是10行
[root@oldboy99-Kylin ~]# tail /etc/passwd
cockpit-ws:x:993:990:User for cockpit-ws:/nonexisting:/sbin/nologin
chrony:x:992:989::/var/lib/chrony:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
dhcpd:x:177:177:DHCP server:/:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
pesign:x:991:987:Group for the pesign signing daemon:/var/run/pesign:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
# 查看文件末尾的5行信息
[root@oldboy99-Kylin ~]# tail /etc/passwd -n5
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
pesign:x:991:987:Group for the pesign signing daemon:/var/run/pesign:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
# 实时查看日志文件末尾的信息
[root@oldboy99-Kylin ~]# tail -f /var/log/messages
Apr 29 13:25:38 oldboy99-Kylin systemd[1]: kylin-kms-activation.service: Service RestartSec=30s expired, scheduling restart.
Apr 29 13:25:38 oldboy99-Kylin systemd[1]: kylin-kms-activation.service: Scheduled restart job, restart counter is at 208.
Apr 29 13:25:38 oldboy99-Kylin systemd[1]: Stopped run kylin_kms_daemon at boot time.
Apr 29 13:25:38 oldboy99-Kylin systemd[1]: Started run kylin_kms_daemon at boot time.
Apr 29 13:26:38 oldboy99-Kylin systemd[1]: kylin-kms-activation.service: Main process exited, code=exited, status=255/EXCEPTION
Apr 29 13:26:38 oldboy99-Kylin systemd[1]: kylin-kms-activation.service: Failed with result 'exit-code'.
Apr 29 13:27:08 oldboy99-Kylin systemd[1]: kylin-kms-activation.service: Service RestartSec=30s expired, scheduling restart.
Apr 29 13:27:08 oldboy99-Kylin systemd[1]: kylin-kms-activation.service: Scheduled restart job, restart counter is at 209.
Apr 29 13:27:08 oldboy99-Kylin systemd[1]: Stopped run kylin_kms_daemon at boot time.
Apr 29 13:27:08 oldboy99-Kylin systemd[1]: Started run kylin_kms_daemon at boot time.
[root@oldboy99-Kylin ~]# head /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
# 查看文件开头5行内容
[root@oldboy99-Kylin ~]# head /etc/passwd -n5
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
2.2 grep 行过滤器
grep:正则表达式,可以出过滤文件中包含目标内容的行。
grep是逐行匹配内容。
grep选项 | 说明 |
---|---|
-i | ignore case,忽略大小写 |
-n | 显示行号 |
-v | invert,取反,显示非指定内容的行 |
-
在/etc/passwd文件中找到包含root的行
[root@oldboy99-Kylin ~]# grep 'root' /etc/passwd root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin
-
在ssh的配置文件中过滤出包含Port的行
[root@oldboy99-Kylin ~]# grep 'Port' /etc/ssh/sshd_config Port 12345 #GatewayPorts no GatewayPorts no
-
在ssh的配置文件中过滤出包含PermitRootLogin的行(不区分大小写)
[root@oldboy99-Kylin ~]# grep 'PermitRootLogin' /etc/ssh/sshd_config -i PermitRootLogin yes # the setting of "PermitRootLogin without-password".
-
在ssh的配置文件中过滤出包含Port的行,并显示行号
[root@oldboy99-Kylin ~]# grep 'Port' /etc/ssh/sshd_config -n 17:Port 12345 101:#GatewayPorts no 160:GatewayPorts no
-
在/etc/passwd中过滤出不包含root的行
[root@oldboy99-Kylin ~]# grep -v 'root' /etc/passwd bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync ……
2.3 less/more
- 按页查看文件内容,但是无法修改文件内容
- 使用more时,查看到文件末尾会自动退出,且无快捷键
- 推荐使用less
less快捷键 | 说明 |
---|---|
q | 退出 |
G | 最后一行 |
g | 第一行 |
数字g | 到某一行 |
空格或ctrl+f | 下一页 |
ctrl+b | 上一页 |
3. 日志分析必备知识
3.1 wc
wc:word count,单词计数,一般用来计算文件的行数
- 统计/etc/passwd的行数
# -l:lines,只显示行数 [root@oldboy99-Kylin ~]# wc -l /etc/passwd 36 /etc/passwd
- 统计/etc/services的行数
[root@oldboy99-Kylin ~]# wc -l /etc/services 11473 /etc/services
3.2 管道符:|
- 左边命令的输出作为右边命令的输入(参数)
- 管道符的两边必须是命令
- 统计/etc/passwd文件中命令解释器是/bin/bash的数量
[root@oldboy99-Kylin ~]# grep '/bin/bash' /etc/passwd |wc -l 1
- 统计系统中sshd进程的数量
[root@oldboy99-Kylin ~]# ps -ef | grep 'sshd' |wc -l 4
- 过滤出sshd服务的端口
[root@oldboy99-Kylin ~]# ss -lntup |grep 'sshd' tcp LISTEN 0 128 0.0.0.0:12345 0.0.0.0:* users:(("sshd",pid=835,fd=5)) tcp LISTEN 0 128 [::]:12345 [::]:* users:(("sshd",pid=835,fd=6))
4. 思维导图
【金山文档】 思维导图 https://www.kdocs.cn/l/co3I7PtpTYQX