菜鸟科技网

如何查看当前运行的进程列表?

在Linux和Unix-like系统中,查看进程是系统管理和故障排查的基础操作,掌握相关命令能够帮助用户高效监控进程状态、资源占用及父子关系,以下是常用的查看进程命令及其详细用法,涵盖基础信息展示、高级筛选及实时监控等多个维度。

如何查看当前运行的进程列表?-图1
(图片来源网络,侵删)

基础查看命令

ps命令:静态快照查看

ps是最基础的进程查看工具,默认显示当前终端关联的进程,常用选项组合如下:

  • ps -ef:以完整格式显示所有进程,包含UID、PID、PPID、C(CPU占用率)、STIME(启动时间)、TTY(终端)、TIME(CPU累计时间)、CMD(命令)等列,适合全局查看。
  • ps aux:BSD格式输出,包含USER(用户)、%CPU(CPU占比)、%MEM(内存占比)、VSZ(虚拟内存大小)、RSS(常驻内存大小)、STAT(进程状态)等字段,其中STAT状态码如S(休眠)、R(运行)、Z(僵死)等需重点关注。

top命令:动态实时监控

top以全屏交互界面实时刷新进程列表,默认按CPU占用率排序,核心功能包括:

  • M键按内存占用排序,按P键切回CPU排序,按k键终止指定进程(需输入PID)。
  • 显示系统整体信息:顶部为任务统计(总进程数、运行/休眠/僵死进程数)、CPU及内存使用率(含交换分区),下方为进程详细列表。

htop命令:增强版top

htoptop的升级版,支持彩色显示、树形进程结构(F5切换)、鼠标操作及垂直/水平滚动,更适合复杂场景,通过F2可自定义列显示,如添加I/O读写、线程数等指标。

进阶查看命令

pgreppidof:精准查找PID

  • pgrep [选项] 进程名:根据进程名、用户、终端等条件筛选PID,如pgrep -u root sshd查找root用户的sshd进程PID。
  • pidof 进程名:直接返回指定进程名的PID列表,如pidof nginx

pstree:进程树可视化

pstree以树形结构展示进程的父子关系,-p选项显示PID,-u显示用户,便于分析进程启动链路,例如pstree -p可清晰看到init/systemd作为根进程的层级关系。

如何查看当前运行的进程列表?-图2
(图片来源网络,侵删)

lsof:打开文件关联进程

lsof [选项] [文件/目录]用于查看指定文件被哪些进程打开,或查看进程打开的所有文件,常用场景:

  • lsof -i :80:查看占用80端口的进程。
  • lsof -p 1234:查看PID为1234的进程打开的所有文件(包括网络连接)。

资源占用与监控

glances:综合监控工具

glances以仪表盘形式整合CPU、内存、磁盘、网络及进程信息,支持-b(网卡流量)、-d(磁盘I/O)等选项,适合服务器巡检。

vmstatiostat:系统资源统计

  • vmstat 1:每秒刷新一次,显示进程(r/b)、内存(swap/free)、CPU(us/sy/id)等统计信息,适合排查CPU瓶颈。
  • iostat -xz 1:监控磁盘I/O性能,包括%util(磁盘利用率)、await(平均等待时间)等指标。

常见进程状态说明

状态码 含义 示例场景
R 运行中 正在CPU上执行或就绪
S 休眠(可中断) 等待事件或I/O完成
D 不可中断休眠 等待I/O操作(如磁盘读写)
Z 僵死 进程已终止但父进程未回收
T 停止 被信号(如SIGSTOP)暂停

相关问答FAQs

Q1: 如何查看某个进程的启动时间?
A: 使用ps -eo pid,etime,cmd可查看进程的运行时长(etime),但若需精确启动时间,可通过ps -p PID -o lstart获取,或结合stat /proc/PID查看进程目录的创建时间。

Q2: 如何找出占用内存最高的前5个进程?
A: 执行ps --sort=-%mem -eo pid,ppid,cmd,%mem,%cpu --no-headers | head -n 5,其中--sort=-%mem按内存占用降序排列,-eo自定义输出列,head -n 5取前5行,或使用top后按M键排序,手动记录前5个进程。

如何查看当前运行的进程列表?-图3
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇