day006

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选项说明
-iignore case,忽略大小写
-n显示行号
-vinvert,取反,显示非指定内容的行
  • 在/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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孙克旭​‌​

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值