菜鸟科技网

Unix查看进程命令有哪些常用选项?

在Unix-like操作系统中,查看进程是系统管理和故障排查的核心操作之一,通过命令行工具,管理员可以实时监控进程状态、资源占用、进程树结构等信息,从而优化系统性能、识别异常进程或终止失控任务,Unix系统提供了多种查看进程的命令,它们各有侧重,适用于不同场景,以下将详细介绍常用命令及其用法、参数和实际案例。

Unix查看进程命令有哪些常用选项?-图1
(图片来源网络,侵删)

基础进程查看命令

ps命令:静态快照查看

ps(process status)是最基础的进程查看工具,用于显示当前终端或指定条件的进程列表,其输出格式简洁,适合快速查看进程状态。

  • 常用参数组合
    • ps aux:显示所有进程的详细信息(a表示所有终端的进程,u显示用户格式,x包括无终端的进程)。
      输出字段包括:USER(进程所有者)、PID(进程ID)、%CPU(CPU占用率)、%MEM(内存占用率)、VSZ(虚拟内存大小)、RSS(物理内存大小)、TTY(终端)、STAT(进程状态)、START(启动时间)、COMMAND(命令名)。
    • ps -ef:以系统管理员视角显示所有进程,包含PPID(父进程ID),适合分析进程树关系。
    • ps -eo pid,ppid,cmd:自定义输出列,仅显示进程ID、父进程ID和命令。

top命令:动态实时监控

top以交互式界面实时更新进程列表,默认按CPU占用率排序,适合监控系统资源消耗情况。

  • 交互操作
    • M 按内存占用排序,按 P 按CPU排序,按 k 终止指定进程(需输入PID)。
    • q 退出,按 1 查看各CPU核心的实时负载。
  • 常用参数top -b -n 1(非交互模式,输出1次结果,适合脚本处理)。

htop命令:增强版top

htoptop的替代品,提供彩色界面、进程树可视化、鼠标操作支持等功能,需单独安装(如sudo apt install htop)。

  • 优势
    • 通过F2键可自定义列显示,F5键展开/折叠进程树。
    • 支持横向滚动查看完整命令行,直接选中进程后按F9可终止。

高级进程分析工具

pgreppkill:按条件筛选进程

pgrep通过进程名、用户等条件查找PID,pkill则直接向匹配的进程发送信号(如终止、暂停)。

Unix查看进程命令有哪些常用选项?-图2
(图片来源网络,侵删)
  • 示例
    • pgrep -u username nginx:查找用户username下所有nginx进程的PID。
    • pkill -f "java.*tomcat":强制终止命令行包含java.*tomcat的进程。

pstree:进程树可视化

pstree以树形结构展示进程间的父子关系,默认用连接父子进程,-p参数可显示PID。

  • 示例
    • pstree -p | grep nginx:查看nginx相关的进程树结构。

lsof:列出打开文件的进程

lsof(list open files)可查看进程打开的文件、网络连接等,适合排查端口占用或文件锁定问题。

  • 常用参数
    • lsof -i :80:查看占用80端口的进程。
    • lsof -p 1234:查看PID为1234的进程打开的所有文件。

进程资源统计与分析

vmstat:虚拟内存统计

vmstat报告进程、内存、I/O等系统级统计信息,-p参数可按进程统计。

  • 示例
    • vmstat -p 1234:显示PID 1234的内存和I/O统计。

sar:系统活动报告

sar(System Activity Reporter)需安装sysstat包,可记录历史进程数据,适合长期性能分析。

Unix查看进程命令有哪些常用选项?-图3
(图片来源网络,侵删)
  • 示例
    • sar -u 1 5:每秒收集1次,共5次CPU使用率报告。

实际应用场景案例

场景1:排查高CPU占用进程

top -b -n 1 | head -20  # 查看CPU占用最高的前20个进程
ps -eo pid,pcpu,pmem,cmd --sort=-pcpu | head -10  # 按CPU排序

场景2:分析Java进程内存泄漏

jps -l  # 列出Java进程PID
jmap -histo <PID> | head -20  # 查看对象内存占用

场景3:终止僵尸进程

ps -eo pid,stat | grep Z  # 查找僵尸进程(STAT为Z)
kill -9 <PID>  # 强制终止僵尸进程的父进程

进程状态说明

Unix进程状态(STAT字段)常见标识包括:

  • R:运行中
  • S:睡眠中(可中断)
  • D:不可中断睡眠(通常等待I/O)
  • Z:僵尸进程(已终止但父进程未回收)
  • T:停止(如收到SIGSTOP信号)

相关问答FAQs

Q1: 如何查看某个用户的所有进程?
A1: 使用ps -u usernamepgrep -u username,查看用户oracle的所有进程:

ps -u oracle

或获取其PID列表后通过ps -p $(pgrep -u oracle)进一步筛选。

Q2: 为什么topps aux显示的进程数量不一致?
A2: 两者统计范围不同。ps aux默认包含所有终端的进程(包括后台进程),而top默认仅显示当前终端的进程(除非使用top -x)。top是动态刷新的,而ps aux是静态快照,可能导致瞬时数量差异。

分享:
扫描分享到社交APP
上一篇
下一篇