You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何追踪非手动触发的系统意外重启的发起进程、应用或脚本

如何追踪非手动触发的系统意外重启的发起进程、应用或脚本

我运行了last -x得到以下输出:

pi       pts/0        fe80::ee35:7d68: Fri Feb  9 07:56   still logged in
runlevel (to lvl 3)   5.4.51-v7+       Thu Feb  8 20:50   still running
pi       tty1                          Thu Feb  8 20:41    gone - no logout
reboot   system boot  5.4.51-v7+       Thu Jan  1 00:00   still running
runlevel (to lvl 3)   5.4.51-v7+       Thu Feb  8 15:00 - 20:50  (05:49)

可以看到有一次意外重启,但我确定不是手动执行的命令导致的,请问该如何追踪发起重启的进程、应用或脚本?

碰到这种莫名的重启确实让人头疼,我来分享几个实用的排查步骤,帮你找出根源:

  • 深挖系统日志细节
    首先查看/var/log/syslog(树莓派默认的系统日志文件),搜索和重启、关机相关的条目,命令如下:

    grep -i 'reboot\|shutdown\|init' /var/log/syslog
    

    这里可能会找到发起重启的进程ID(PID)、进程名称甚至具体的调用者信息,比如如果是某个脚本调用了reboot命令,日志里通常会留下痕迹。

  • 用journalctl排查systemd相关操作
    树莓派现在默认用systemd,可以通过journalctl工具获取更精准的重启相关记录:

    journalctl -u systemd-logind.service | grep -i 'reboot\|poweroff'
    

    这个命令会聚焦登录管理器的操作日志,能看到是哪个用户、哪个会话触发的重启。另外还可以按时间范围筛选日志,缩小排查范围,比如针对你看到的15:00左右的重启:

    journalctl --since "2024-02-08 14:40" --until "2024-02-08 15:10"
    

    仔细翻阅这段时间的日志,找有没有异常的进程调用、服务启停记录。

  • 检查定时任务
    定时任务是常见的自动重启触发源,先检查当前用户的定时任务:

    crontab -l
    

    再检查系统级的定时任务配置:

    cat /etc/crontab
    ls -l /etc/cron.d/
    

    另外也别忘了查看anacron的配置(/etc/anacrontab),它负责处理周期性的系统任务,也可能触发重启。

  • 利用审计日志追踪操作
    如果你的系统开启了auditd服务,可以用ausearch工具查找所有和reboot相关的操作记录:

    ausearch -k reboot
    

    要是没开启auditd,也可以看看用户的命令历史,但注意后台进程或脚本触发的重启可能不会留下这个记录,聊胜于无:

    history | grep -i reboot
    
  • 排除硬件或驱动问题
    虽然你认为是进程触发的,但也不能完全排除硬件因素,比如树莓派过热、电源供电不稳都可能导致自动重启。可以用以下命令检查硬件相关日志:

    dmesg | grep -i error\|warning\|thermal
    

    再查看CPU温度确认是否过热:

    cat /sys/class/thermal/thermal_zone0/temp | awk '{print $1/1000 "℃"}'
    

备注:内容来源于stack exchange,提问作者user2304458

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 06:19:51