Linux中如何获取进程信息

Q在 Linux 中,我怎么快速查看某个进程当前占用了多少资源?当我只知道进程名或 PID 时,想马上了解它的 CPU、内存和运行状态,有哪些常用命令可以直接查看?

A使用 ps、top 或 pidstat 查看进程资源占用

可以通过 ps、top、pidstat 等命令查看进程的资源使用情况。若已知 PID,可以用 ps -p -o pid,ppid,cmd,%cpu,%mem,state 来获取详细信息;也可以用 top -p 实时观察 CPU 和内存变化。若想看更细的历史统计,pidstat 也很有帮助。

Q如果我只知道进程名称,怎样找到对应的进程号和详细信息?有些时候我没有 PID,只知道应用的名字,怎样在 Linux 里定位它对应的进程并查看相关信息?

A用 pgrep、pidof 和 ps 组合定位进程

可以先用 pgrep <进程名> 或 pidof <进程名> 找到进程号,再结合 ps -p -f 查看完整命令行、父进程和状态信息。若要看进程树关系,也可以使用 pgrep -a 或 ps -ef | grep <进程名> 辅助确认。

Q我想查看进程的父子关系和当前运行上下文,有什么办法?在排查服务启动链路、守护进程归属或子进程异常时,我应该如何查看进程之间的层级关系和执行环境?

A使用 ps、pstree 和 /proc 查看进程关系

可以用 pstree -p 直观查看进程树,了解父进程和子进程之间的关系。也可以通过 ps -ef --forest 查看层级结构。若需要进一步查看环境变量、当前目录和打开的文件,可访问 /proc// 下的相关文件,例如 cwd、environ、fd 等。

Q进程卡住或异常退出时,Linux 里有哪些信息值得重点排查?当应用无响应、频繁崩溃或者被系统杀掉时,我想知道应该重点看哪些进程信息来判断问题来源?

A重点检查状态、信号、日志和 /proc 信息

可以先查看进程状态是否为 D、Z、T 等异常状态,再确认是否收到 kill 信号或因 OOM 被系统终止。通过 dmesg、journalctl、/var/log 下的服务日志,以及 /proc//status、/proc//limits、/proc//stack 等信息,通常能定位到资源不足、权限问题或阻塞等待等原因。