[步骤] Linux Kdump 的开启 (临时版)

步骤一:理解 Kdump 的作用

开启 core dump 之后,如果出现了 C 语言程序的 crash,则会将 crash 的结果记录到一个文件里

步骤二:临时开启 Kdump

2.1 设置可生成 Kdump 大小的参数

2.1.1 显示当前允许生成 Kdump 的大小
# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 31722
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 31722
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
2.1.2 将允许生成 Kdump 大小的参数设置为无限大
# ulimit -c unlimited
2.1.3 确认修改结果
# ulimit -a
core file size          (blocks, -c) unlimited
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 31722
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 31722
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

2.2 设置 Kdump 生成的位置

# sysctl -w kernel.core_pattern=/tmp/corefile/core-%e-%p

步骤三:此时如果有 C 语言的程序 crash 了,则会被自动记录

[内容] Linux 日志消息优先级简介

内容一:系统日志的存放路径

/var/log/messages

内容二:显示系统对应优先级的日志的方法

# grep -i <priority> /var/log/messages

内容三:日志消息的优先级

级别 关键字 描述 内容
0 EMERG 致命级 (KERN_EMESG) 紧急,系统本身已经无法再运行必须马上拯救
1 ALERT 警戒级 (KERN_ALERT) 警报,系统出现了重大错误必须马上处理的情况
2 CRIT 临界级 (KERN_CRIT) 严重,系统出现了严重的情况
3 ERROR 错误级 (KERN_ERR) 错误,系统出现了错误的情况
4 WARNING 告警级 (KERN_WARN) 警告,系统出现了需要警告的情况
5 NOTICE 注意级 (KERN_NOTICE) 注意,系统出现了需要注意的情况
6 INFO 通知级 (KERN_INFO) 信息,系统出现了一些情况
7 DEBUG 调试级 (KERN_DEGUG) 调试,系统出现了程序或服务调试的情况

(注意:优先级是按照从紧急到无所谓的顺序进行排列的)

[命令] Linux 命令 journalctl (显示日志)

内容一:journalctl 日志工具的常用用法

1.1 显示包含某 1 个服务名的关键字的日志

# journalctl | grep <server name keywords>

1.2 显示某 1 个服务某 1 个优先级的日志

# journalctl -u <service> -p <priority>

或者:

# journalctl --unit <service> --priority <priority>

1.3 显示某 1 个编号的日志

# journalctl -n <number of messages>

或者:

# journalctl --lines <number of messages>

1.4 显示从某 1 个日期开始到某 1 个日期结束的日志

# journalctl -S="<yyyy-mm-dd> <HH:MM:SS>" -U="<yyyy-mm-dd> <HH:MM:SS>"

或者:

# journalctl --since="<yyyy-mm-dd> <HH:MM:SS>" --until="<yyyy-mm-dd> <HH:MM:SS>"

内容二:journalctl 日志工具的使用案例

2.1 案例一:显示最近 5 条重要程度在 ERR 及以上的日志信息

# journalctl -p err -n 5

或者:

# journalctl --priority err --lines 5

2.2 案例二:显示所有与服务 httpd 相关的日志信息

# journalctl -u httpd

或者:

# journalctl --unit=UNIT httpd

2.3 案例三:显示所有于 root 用户相关的日志

# journalctl -u root

或者:

# journalctl --user-unit root

或者:

# journalctl _UID=0

2.4 案例四:显示前 5 个小时内的日志信息

# journalctl -S "2019-05-01 14:00" -U "2019-05-01 19:00"

或者:

# journalctl --since "2019-05-01 14:00" --until "2019-05-01 19:00"

2.5 案例五:显示 boot 日志,并在有解释的地方显示解释

# journalctl -bx

或者:

# journalctl --boot --catalog

2.6 案例六:显示内核日志

# journalctl -k

或者:

# journalctl --dmesg

2.7 案例七:显示日志,按页显示,并在有解释的地方显示解释

# journalctl -ex

或者:

# journalctl --pager-end --catalog

2.8 案例八:持续显示日志

# journalctl -f

或者:

# journalctl --follow

2.9 案例九:按时间反序显示日志

# journalctl -r

或者:

# journalctl --reverse