主机重启排查方向命令

主机重启排查方向命令

一、时间线梳理(先做这个)先确认重启时间、关机时间、上一次启动时间。

 

# 当前启动时间

uptime -s

who -b

last | grep reboot

 

# 所有启动记录

journalctl --list-boots

 

# 上一次启动的最后日志

journalctl -b -1 --no-pager | tail -50

 

# 上一次启动的日志总量

journalctl -b -1 --no-pager | wc -l

二、系统日志(journal 全量)

 

排查正常关机、用户态主动重启、服务级异常。

# 上次启动最后 50 条

journalctl -b -1 --no-pager | tail -50

 

# 23:30 ~ 23:43 完整日志

journalctl -b -1 --no-pager --since "2026-09-25 23:30:00" --until "2026-09-25 23:43:00"

 

# 有没有关机流程

journalctl -b -1 --no-pager | grep -i -E "shutdown|reboot|power|Stopped|Reached target|Shutting down"

 

# 有没有服务失败 / 重启 / OOM

journalctl -b -1 --no-pager | grep -i -E "Failed|restart|respawn|oom|killed|timeout|abort|error"

 

# 23:35 ~ 23:43 每分钟日志总量

journalctl -b -1 --no-pager --since "2026-09-25 23:35:00" --until "2026-09-25 23:43:00" | \

awk '{print $1, $2, $3}' | cut -d: -f1-2 | sort | uniq -c

 

# 23:41 这一分钟有多少条

journalctl -b -1 --no-pager --since "2026-09-25 23:41:00" --until "2026-09-25 23:42:00" | wc -l

 

# 1. messages 最后 50 行

tail -50 /var/log/messages

 

# 2. messages 最后一条的时间

tail -1 /var/log/messages

 

# 3. messages 23:40 ~ 23:43

grep -E "Sep 25 23:4[0-3]" /var/log/messages

 

# 4. messages 异常关键词

grep -i -E "panic|Oops|BUG|lockup|hung|timeout|reset|abort|error|fail|mce|nmi|thermal|watchdog|shutdown|reboot|power" /var/log/messages | tail -100

 

# 5. messages 轮转文件

ls -lh /var/log/messages*

zcat /var/log/messages-*.gz 2>/dev/null | grep -E "Sep 25 23:4" | tail -50

 

# 6. 对比 journal 和 messages 最后一条

journalctl -b -1 --no-pager | tail -1

tail -1 /var/log/message

三、内核日志(journal -k)

 

排查 panic、lockup、hung task、驱动报错、Call Trace。

# panic / lockup / hung task

journalctl -k -b -1 --no-pager | grep -i -E "panic|Oops|BUG|soft lockup|hard lockup|stuck for|watchdog: BUG|hung task|blocked for more than|rcu.*stall"

 

# Call Trace

journalctl -k -b -1 --no-pager | grep -i -E "Call Trace|WARNING|RIP:"

 

# MCE / NMI / thermal

journalctl -k -b -1 --no-pager | grep -i -E "mce|nmi|hardware error|machine check|thermal|throttl"

 

# 驱动报错

journalctl -k -b -1 --no-pager | grep -i -E "error|fail|timeout|reset|abort|scsi|ata|nvme|sd |megaraid|mpt3sas"

 

# 最后 100 行原文

journalctl -k -b -1 --no-pager | tail -100

 

# kauditd 是否常态

journalctl -k -b -1 --no-pager | grep "kauditd_printk_skb" | \

awk '{print $1, $2, $3}' | cut -d: -f1-2 | sort | uniq -c | sort -rn | head -20

 

 四、sar(资源维度)

 

排查 CPU、内存、swap、I/O、调度器、队列。

 

# CPU

sar -u -f /var/log/sa/sa25 -s 22:00:00 -e 23:56:00

 

# 进程队列和负载

sar -q -f /var/log/sa/sa25 -s 22:00:00 -e 23:56:00

 

# 内存

sar -r -f /var/log/sa/sa25 -s 22:00:00 -e 23:56:00

 

# swap

sar -W -f /var/log/sa/sa25 -s 22:00:00 -e 23:56:00

 

# I/O

sar -b -f /var/log/sa/sa25 -s 22:00:00 -e 23:56:00

 

# 上下文切换

sar -w -f /var/log/sa/sa25 -s 22:00:00 -e 23:56:00

 

# 确认 sa 文件

ls -lh /var/log/sa/

五、kdump / vmcore

 

排查是不是标准内核 panic。

 

```bash

# kdump 状态

kdumpctl status

systemctl status kdump

 

# 内核参数

cat /proc/cmdline | grep -E "crashkernel|panic|softlockup|hung_task"

 

# vmcore 目录

ls -lh /var/crash/

ls -lh /var/crash/*/

 

# kexec 是否加载

cat /sys/kernel/kexec_crash_loaded

 

六、硬件日志(dmesg)

 

排查 MCE、NMI、thermal、硬件错误。

 

# MCE / NMI / thermal

dmesg -T | grep -i -E "mce|nmi|hardware error|machine check|thermal|throttl"

 

# lockup

dmesg -T | grep -i -E "soft lockup|hard lockup|stuck for|watchdog: BUG"

 

# Call Trace

dmesg -T | grep -i -E "Call Trace|WARNING|RIP:"

 

# 存储

dmesg -T | grep -i -E "scsi|ata|nvme|sd |block|ext4|xfs" | tail -50

七、IPMI SEL

 

排查平台层事件。注意:SEL 是 UTC,本地时间要 +8 小时。

 

# SEL 概览

ipmitool sel info

 

# SEL 全部

ipmitool sel list

ipmitool sel elist

 

# ACPI 事件

ipmitool sel list | grep -i "ACPI"

 

# 关键事件

ipmitool sel list | grep -i -E "ACPI|soft-off|watchdog|OS Boot|OS Stop|Power Unit|Power Supply|SMI|Machine Check|CPU|Memory|Thermal|Temperature|Voltage|Fan|Reset|Reboot"

 

# 9/25 当天

ipmitool sel list | grep "09/25/2026"

八、IPMI event log(不是 SEL)

有些 BMC 有独立 event log。

ipmitool event 1

ipmitool event 2

ipmitool event 3

ipmitool chassis status

ipmitool power status

九、IPMI 传感器

排查电源、温度、电压、风扇。

# 全部传感器

ipmitool sensor list

ipmitool sdr list

# 分类

ipmitool sdr type temperature

ipmitool sdr type voltage

ipmitool sdr type fan

ipmitool sdr type "Power Supply"

ipmitool sdr type "Processor"

ipmitool sdr type "Memory"

十、RAID 卡

排查 RAID 卡主动复位、硬盘异常。

# 控制器状态

./storcli-linux /c0 show

 

# 逻辑盘状态

./storcli-linux /c0 /vall show

 

# 物理盘状态

./storcli-linux /c0 /eall /sall show

 

# 事件

./storcli-linux /c0 show events

 

# termlog

./storcli-linux /c0 show termlog

 

# 单块盘详情

./storcli-linux /c0 /e86 /s2 show all

 

十一、网络子系统

排查网卡、vxlan、calico、netlink。

# calico vxlan 日志

journalctl -b -1 --no-pager | grep -i -E "calico|vxlan|rtnl|invalid family" | tail -100

 

# 按分钟统计 calico vxlan

journalctl -b -1 --no-pager | grep "vxlan.*invalid family" | \

awk '{print $1, $2, $3}' | cut -d: -f1-2 | sort | uniq -c | sort -rn | head -20

 

# 网卡 link 状态

journalctl -b -1 --no-pager | grep -i -E "link|carrier|ethtool|bond|bridge|route|neigh|arp|nic|eth"

# 内核网络

journalctl -k -b -1 --no-pager | grep -i -E "net|tcp|udp|vxlan|bond|bridge|route|neigh|arp"

 

十二、虚拟化 / 容器

如果跑 Kubernetes / Docker。

# kubelet

journalctl -u kubelet -b -1 --no-pager --since "2026-09-25 23:30:00" --until "2026-09-25 23:43:00" | tail -100

 

# containerd

journalctl -u containerd -b -1 --no-pager --since "2026-09-25 23:30:00" --until "2026-09-25 23:43:00" | tail -100

 

# docker

journalctl -u docker -b -1 --no-pager --since "2026-09-25 23:30:00" --until "2026-09-25 23:43:00" | tail -100

十三、cron / 定时任务

排查 23:40 左右有没有重量级任务。

# cron 执行记录

journalctl -b -1 --no-pager --since "2026-09-25 23:30:00" --until "2026-09-25 23:43:00" | grep -i -E "CROND|cron|CMD"

 

# cron 配置

cat /etc/crontab

ls -la /etc/cron.d/

ls -la /etc/cron.hourly/

ls -la /etc/cron.daily/

十四、BIOS / 固件

排查 ASR / OS Watchdog / BIOS 版本。

**需要进 BIOS 或 BMC 界面:**

 

- ASR(Automatic Server Restart)

- OS Watchdog Timer

- Watchdog Timer

- Auto Reset

- BIOS 版本、CPLD 版本

**命令行可查:**

dmidecode -t bios

dmidecode -t system

 

十五、对比其他同业务机器

排查是不是环境常态。

# 99 当前启动日志总量

journalctl -b --no-pager | wc -l

 

# 99 calico vxlan

journalctl -b --no-pager | grep -c "vxlan.*invalid family"

 

# 99 kauditd

journalctl -k -b --no-pager | grep -c "kauditd_printk_skb"

 

# 99 内核版本

uname -r

 

# 99 calico 版本

calicoctl version 2>/dev/null || kubectl get pods -n kube-system | grep calico

 

十六、一键排查脚本(建议保存)

#!/bin/bash

# 重启排查脚本

 

echo "===== 1. 启动时间 ====="

uptime -s

who -b

journalctl --list-boots | tail -5

 

echo "===== 2. 上次启动日志尾部 ====="

journalctl -b -1 --no-pager | tail -30

 

echo "===== 3. panic / lockup / hung task ====="

journalctl -k -b -1 --no-pager | grep -i -E "panic|Oops|BUG:|soft lockup|hard lockup|hung task|blocked for more than|rcu.*stall"

 

echo "===== 4. MCE / NMI / thermal ====="

dmesg -T | grep -i -E "mce|nmi|hardware error|machine check|thermal|throttl"

 

echo "===== 5. Call Trace ====="

journalctl -k -b -1 --no-pager | grep -i -E "Call Trace|WARNING|RIP:" | tail -20

 

echo "===== 6. kdump ====="

kdumpctl status 2>/dev/null

ls -lh /var/crash/ 2>/dev/null

 

echo "===== 7. SEL ACPI ====="

ipmitool sel list | grep -i "ACPI"

ipmitool sel list | tail -10

 

echo "===== 8. 电源传感器 ====="

ipmitool sdr type "Power Supply"

 

echo "===== 9. sar CPU ====="

sar -u -f /var/log/sa/sa$(date +%d) -s 22:00:00 -e 23:56:00 2>/dev/null | tail -10

 

echo "===== 10. sar I/O ====="

sar -b -f /var/log/sa/sa$(date +%d) -s 22:00:00 -e 23:56:00 2>/dev/null | tail -10

 

echo "===== 11. RAID 状态 ====="

./storcli-linux /c0 show 2>/dev/null | head -30

./storcli-linux /c0 show events 2>/dev/null | tail -20

 

十七、一句话总结

**排查维度一共 16 个:**

 

1. 时间线(`uptime -s` / `last reboot` / `journalctl --list-boots`)

2. 系统日志(`journalctl -b -1`)

3. 内核日志(`journalctl -k -b -1`)

4. sar 资源(`sar -u/-q/-r/-W/-b/-w`)

5. kdump / vmcore(`kdumpctl status` / `/var/crash/`)

6. 硬件日志(`dmesg -T`)

7. IPMI SEL(`ipmitool sel list`)

8. IPMI event log(`ipmitool event 1/2/3`)

9. IPMI 传感器(`ipmitool sdr type ...`)

10. RAID 卡(`storcli /c0 show ...`)

11. 网络子系统(`journalctl | grep calico/vxlan`)

12. 虚拟化 / 容器(`journalctl -u kubelet/containerd`)

13. cron(`journalctl | grep CROND`)

14. BIOS / 固件(`dmidecode -t bios` + BIOS 界面)

15. 对比其他机器(99)

16. 下次复现开 panic 捕获(`softlockup_panic=1` / `hung_task_panic=1`)

十八、最小排查集(时间紧时优先跑)

# 1. 确认启动时间

uptime -s

journalctl --list-boots | tail -5

 

# 2. 上次启动最后 50 条

journalctl -b -1 --no-pager | tail -50

 

# 3. 内核异常

journalctl -k -b -1 --no-pager | grep -i -E "panic|Oops|BUG:|soft lockup|hard lockup|hung task|blocked for more than|rcu.*stall|mce|nmi|thermal"

 

# 4. kdump

kdumpctl status

ls -lh /var/crash/

 

# 5. SEL ACPI

ipmitool sel list | grep -i "ACPI"

 

# 6. 电源

ipmitool sdr type "Power Supply"

 

# 7. 23:41 日志量

journalctl -b -1 --no-pager --since "2026-09-25 23:41:00" --until "2026-09-25 23:42:00" | wc -l

 

# 8. messages 最后

tail -50 /var/log/messages

 

posted @ 2026-09-26 17:10  LB_运维技术  阅读(11)  评论(0)    收藏  举报