• dmesg查看系统上服务莫名其妙重启的原因


    Linux dmesg命令用于显示开机信息。

    kernel会将开机信息存储在ring buffer中。您若是开机时来不及查看信息,可利用dmesg来查看。开机信息亦保存在/var/log目录中,名称为dmesg的文件里。

    dmesg -T | grep -i oom 

    1、如果发现自己的java进程悄无声息的消失了,几乎没有留下任何线索,那么dmesg一发,很有可能有你想要的。

    [root@host-172-21-210-40 ~]# dmesg -T |grep score
    [Thu Oct 29 08:09:25 2020] Out of memory: Kill process 13062 (tidb-server) score 916 or sacrifice child
    [Thu Oct 29 08:10:51 2020] pd-server invoked oom-killer: gfp_mask=0x201da, order=0, oom_score_adj=0
    [Thu Oct 29 08:10:51 2020] [ pid ]   uid  tgid total_vm      rss nr_ptes swapents oom_score_adj name
    可以看到tidb-server 被打分13062 被系统oom杀掉
    解释一下OOM killer(Out-Of-Memory killer),该机制会监控机器的内存资源消耗。当机器内存耗尽前,该机制会扫描所有的进程(按照一定规则计算,内存占用,时间等),挑选出得分最高的进程,然后杀死,从而保护机器。
    
    dmesg日志时间转换公式: 
    log实际时间=格林威治1970-01-01+(当前时间秒数-系统启动至今的秒数+dmesg打印的log时间)秒数:
    
    date -d “1970-01-01 UTC echo "$(date +%s)-$(cat /proc/uptime|cut -f 1 -d' ')+12288812.926194"|bc seconds”
    

    2、列出加载到内核中的所有驱动

    [root@host-172-21-210-40 ~]# dmesg | more
    [    0.000000] Initializing cgroup subsys cpuset
    [    0.000000] Initializing cgroup subsys cpu
    [    0.000000] Initializing cgroup subsys cpuacct
    [    0.000000] Linux version 3.10.0-957.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Thu Nov 8 23:39:32 UTC 2018
    [    0.000000] Command line: BOOT_IMAGE=/vmlinuz-3.10.0-957.el7.x86_64 root=/dev/mapper/centos-root ro crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=en_US.UTF-8
    [    0.000000] e820: BIOS-provided physical RAM map:
    [    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable
    [    0.000000] BIOS-e820: [mem 0x000000000009fc00-0x000000000009ffff] reserved
    [    0.000000] BIOS-e820: [mem 0x00000000000f0000-0x00000000000fffff] reserved
    [    0.000000] BIOS-e820: [mem 0x0000000000100000-0x00000000bffd9fff] usable
    [    0.000000] BIOS-e820: [mem 0x00000000bffda000-0x00000000bfffffff] reserved
    [    0.000000] BIOS-e820: [mem 0x00000000feffc000-0x00000000feffffff] reserved
    [    0.000000] BIOS-e820: [mem 0x00000000fffc0000-0x00000000ffffffff] reserved
    [    0.000000] BIOS-e820: [mem 0x0000000100000000-0x000000043fffffff] usable
    [    0.000000] NX (Execute Disable) protection: active
    [    0.000000] SMBIOS 2.8 present.
    [    0.000000] DMI: Fedora Project OpenStack Nova, BIOS 1.9.1-5.el7_3.2 04/01/2014
    [    0.000000] Hypervisor detected: KVM
    [    0.000000] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
    [    0.000000] e820: remove [mem 0x000a0000-0x000fffff] usable
    [    0.000000] e820: last_pfn = 0x440000 max_arch_pfn = 0x400000000
    [    0.000000] MTRR default type: write-back
    [    0.000000] MTRR fixed ranges enabled:
    [    0.000000]   00000-9FFFF write-back
    [    0.000000]   A0000-BFFFF uncachable
    [    0.000000]   C0000-FFFFF write-protect
    [    0.000000] MTRR variable ranges enabled:
    

    3、显示所有被内核检测到的硬盘设备

    [root@host-172-21-210-40 ~]# dmesg | grep vdb
    [    1.720171] virtio_blk virtio3: [vdb] 1048576000 512-byte logical blocks (536 GB/500 GiB)
    [    1.721297]  vdb: vdb1
    [  567.779935] EXT4-fs (vdb1): mounted filesystem with ordered data mode. Opts: nodelalloc
    

    4. 清空dmesg缓冲区日志

    我们可以使用如下命令来清空dmesg的日志。该命令会清空dmesg环形缓冲区中的日志。但是你依然可以查看存储在‘/var/log/dmesg’文件中的日志。你连接任何的设备都会产生dmesg日志输出。

    [root@tecmint.com log]# dmesg -c

    5. 实时监控dmesg日志输出

    在某些发行版中可以使用命令‘tail -f /var/log/dmesg’来实时监控dmesg的日志输出。

    [root@tecmint.com log]# watch "dmesg | tail -20"
    

      

     

     

      

    做一个决定,并不难,难的是付诸行动,并且坚持到底。
  • 相关阅读:
    20160220.CCPP体系详解(0030天)
    20160219.CCPP体系详解(0029天)
    20160217.CCPP体系详解(0027天)
    Discuz 如何开启 memcache
    20160216.CCPP体系详解(0026天)
    20160215.CCPP体系详解(0025天)
    Linux之父:诺基亚更应选择 Android 平台
    Linux 之父 Linus 的 8 个趣闻轶事
    Linux 中识别 USB 设备名字的 4 种方法
    码农们加班是“心甘情愿”吗?都是被“逼”的
  • 原文地址:https://www.cnblogs.com/wukc/p/13895302.html
Copyright © 2020-2023  润新知