嵌入式爱好者

系统卡死排查思路

2024-8-29 07:54| 发布者: Q_Y_X| 查看: 20| 评论: 0

类目: AM6254系列产品  >  linux     文档编号: 1499

工具及命令

1.ssh

如果没有连接串口的条件,首先可以通过ssh登录到系统。如果无法登录,首先排查是否没有预设ip或者是ssh服务已经崩溃。

2.top命令

使用top命令可实时查看进程占cpu以及内存情况,实时刷新比较直观。但是同样也有弊端,当进程较多,资源表换较快的时候,进程会跳来跳去,不方便确认此时可以用下方的工具。

3.ps命令

可以使用ps -aux查看哪些进程占用cpu或者内存过高,如果有的进程值看起来不太正常,可以和其他正常的板子进行对比,如果确实是进程异常占用cpu或者内存比例过高,并且始终不下降,基本可以确定是该进程卡死了,如果急切需要恢复,可以使用kill -9杀死该进程。

还可以继续向上追查,如果该进程可能是某个服务的子进程,使用ps -ef | grep 进程ID,这样可以显示出该进程对应的父进程。

4.strace命令

strcae -p 进程ID 跟踪进程执行时的系统调用和所接收的信号(即它跟踪到一个进程产生的系统调用,包括参数、返回值、执行消耗的时间,可以看到卡在哪个位置。

查看进程文件描述符目录:查看3进行的是socket操作,也就是卡在通信。

5.netstat命令

使用netstat -anoutp |grep 进程ID 查看通信的目标是什么。

6.journalctl命令

Systemd是Linux发行版的初始化系统,负责启动系统后的所有服务,并监视它们在系统运行期间的状态。Journal是Systemd的一部分,主要负责收集和存储日志数据。

journalctl是Journal的主要接口,提供丰富的功能来检索和显示日志条目。它能从磁盘上的二进制文件或者其他传输目标(如syslog)获取日志。

查看最新的10条日志:
journalctl -n 10
实时查看新添加的日志条目:
journalctl -f
根据优先级过滤(0-7,0表示最重要):
journalctl -p err -b
比如systemd服务日志太多太烦杂,可以过滤掉它:
journalctl | grep -v systemd

具体使用方法参考以下链接:

https://blog.csdn.net/Dontla/article/details/132415985


已解决

未解决

只是看看

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2024-9-20 05:53

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

返回顶部