0

0

Linux如何查看进程的CPU和内存占用

P粉602998670

P粉602998670

发布时间:2025-09-15 11:34:01

|

496人浏览过

|

来源于php中文网

原创

要查看Linux进程的CPU和内存占用,最直接的方法是使用top、ps和htop命令。top提供实时动态监控,可按P键以CPU使用率排序,按M键以内存使用率排序,显示各进程的%CPU和%MEM等关键指标;ps用于获取某一时刻的进程快照,常用ps aux或结合grep查找特定进程,如ps aux | grep nginx;htop是top的增强版,界面更友好,支持鼠标操作和树状视图,便于直观分析。对于特定进程,可通过ps -p PID -o %cpu,%mem,cmd精确查询其资源占用,或使用pidstat进行细粒度采样分析。内存方面需重点理解VIRT(虚拟内存总量)、RES(实际物理内存占用)和SHR(共享内存大小),其中RES是判断内存压力的核心指标,VIRT反映地址空间大小,SHR表示共享部分,避免误判内存消耗。

linux如何查看进程的cpu和内存占用

在Linux系统上,要查看进程的CPU和内存占用,最直接有效的方法就是使用

top
htop
(如果已安装)和
ps
这些命令行工具。它们能让你快速了解系统整体或特定进程的资源消耗情况,是诊断性能问题的利器。

解决方案

要详细了解Linux进程的CPU和内存占用,我们通常会用到以下几个工具,它们各有侧重:

1.

top
命令:实时动态监控

top
是一个非常强大的实时监控工具,它会动态刷新显示当前系统中所有进程的资源使用情况。

top

运行后,你会看到一个交互式的界面,其中包含了许多重要的信息列:

  • PID: 进程ID。
  • USER: 进程所有者。
  • PR: 优先级。
  • NI: Nice值,负值表示高优先级,正值表示低优先级。
  • VIRT: 进程使用的虚拟内存总量(Virtual Memory Size)。
  • RES: 进程当前使用的物理内存总量(Resident Set Size)。
  • SHR: 进程使用的共享内存大小(Shared Memory Size)。
  • S: 进程状态(R运行,S睡眠,T停止,Z僵尸)。
  • %CPU: 进程使用的CPU百分比。
  • %MEM: 进程使用的物理内存百分比。
  • TIME+: 进程启动后占用的CPU总时间。
  • COMMAND: 启动进程的命令名。

top
界面中,你可以按
P
键按CPU使用率排序,按
M
键按内存使用率排序,按
k
键输入PID来杀死一个进程,按
q
键退出。这使得
top
成为快速诊断系统瓶颈的首选。

2.

ps
命令:快照式查看

ps
命令提供的是系统某一时刻的进程快照,不像
top
那样实时更新。它非常适合查找特定进程或进行脚本处理。

查看所有进程的详细信息:

ps aux

或者使用更详细的格式:

ps -ef

ps aux
的输出中,
%CPU
%MEM
列会直接显示CPU和内存占用百分比。如果你想查找特定进程,可以结合
grep

ps aux | grep nginx

这将列出所有包含"nginx"关键字的进程及其资源占用。

3.

htop
命令:增强型交互式监控

htop
top
的一个增强版本,提供了更友好的交互界面、彩色显示和更直观的操作。如果你的系统上没有,通常可以通过包管理器安装(例如,
sudo apt install htop
sudo yum install htop
)。

htop

htop
允许你使用鼠标或方向键轻松选择进程,按
F6
进行排序,按
F9
发送信号(杀死进程)等,非常方便。

ISite企业建站系统1.2.3
ISite企业建站系统1.2.3

ISite企业建站系统是为懂点网站建设和HTML技术的人员(例如企业建站人员)而开发的一套专门用于企业建站的开源免费程序。本系统采用了全新的栏目维护模式,内容添加过程中,前后台菜单是一样的,需要维护前台某个栏目的内容,只需要进后台相应栏目即可,一般的企业人员只需要查看简易的说明就可以上手维护网站内容。通过自由度极高的模板系统,可以适应大多数情况的界面需求,后台带有标签生成器,建站只需要构架好HTM

下载
Linux如何查看进程的CPU和内存占用

如何实时监控Linux进程的资源使用情况?

当系统出现卡顿或者某个服务响应变慢时,我最先想到的就是实时监控工具。

top
htop
无疑是这方面的佼佼者。它们不仅仅是显示数据,更提供了一个动态的窗口,让你能“看”到系统的呼吸。

top
的优势在于其普遍性,几乎所有Linux发行版都自带,无需额外安装。进入
top
界面后,我通常会先按
P
键,让CPU占用最高的进程排在最前面,看看是不是有某个失控的进程在“吃”CPU。接着,我可能会按
M
键,检查内存大户,特别是那些
%MEM
值异常高的进程。理解
VIRT
RES
SHR
这三列内存指标非常重要,稍后我们会详细讨论。
top
的交互性让它在快速定位问题时非常高效,比如发现一个异常进程,可以直接按
k
输入PID将其杀死,当然这需要谨慎操作。

htop
则更像是一个升级版的
top
。它的彩色界面、更直观的CPU核心使用图、以及方便的鼠标操作,让我在长时间监控或需要频繁筛选、排序时更偏爱它。
htop
的树状视图(按
F5
)能清晰地展示父子进程关系,这在调试某些复杂应用时非常有用,比如一个Web服务器可能启动了多个工作进程,通过树状视图可以一目了然。我经常用
htop
来观察某个服务启动后的资源曲线,看看它是不是有内存泄漏的迹象,或者在特定负载下CPU使用是否合理。

除了这两个,偶尔我也会用

watch -n 1 'ps aux --sort=-%cpu | head -n 10'
这样的命令组合,每秒刷新一次,显示CPU占用最高的10个进程,虽然不如
top
/
htop
交互性强,但在某些脚本或自动化场景下也挺实用。

Linux如何查看进程的CPU和内存占用

如何查找特定进程的CPU和内存占用?

很多时候,我们并不想看整个系统的资源情况,而是想聚焦到某个特定的应用或服务上,比如一个数据库进程、一个Web服务器或者我正在开发的某个程序。这时候,

ps
命令就显得非常灵活了。

最常用的方法是结合

grep

ps aux | grep my_application

这会列出所有名称中包含

my_application
的进程。但要注意,
grep
本身也会作为一个进程出现在输出中,所以通常我们会再加一个
grep -v grep
来排除它:

ps aux | grep my_application | grep -v grep

这样就能得到干净的进程列表,其中包含

PID
%CPU
%MEM
等信息。

如果我已经知道进程的PID,那么可以直接用

ps -p  -o %cpu,%mem,cmd
来精确获取其CPU和内存百分比以及完整的命令。例如,如果我的应用PID是12345:

ps -p 12345 -o %cpu,%mem,cmd

这种方式非常精确,尤其是在脚本中处理时。

对于更高级的场景,例如需要查看进程在一段时间内的资源变化趋势,

pidstat
(属于
sysstat
工具包)就非常强大了。它可以提供更详细的进程级别CPU、内存、I/O等统计信息,并且可以指定采样间隔和次数。

# 每秒采样一次,共采样5次,查看PID为12345的进程CPU使用情况
pidstat -u -p 12345 1 5

# 查看PID为12345的进程内存使用情况
pidstat -r -p 12345 1 5

pidstat
给出的数据颗粒度更细,对于性能分析和容量规划非常有帮助。我个人在排查一些偶发性性能问题时,会倾向于用
pidstat
来捕捉特定进程在某个时间段的行为模式。

Linux如何查看进程的CPU和内存占用

Linux进程内存占用中的VIRT、RES和SHR分别代表什么?

这三个内存指标,初看起来容易混淆,但理解它们之间的区别对于准确评估进程的内存需求至关重要。我见过太多人因为只看

VIRT
值就误判内存压力的例子。

  • VIRT (Virtual Memory Size)

    VIRT
    代表的是进程当前可能使用的虚拟内存总量。这包括了进程的代码段、数据段、堆、栈,以及所有映射到进程地址空间的共享库、文件,甚至包括已经交换到磁盘上的内存页。它是一个理论上的上限,很多时候远大于进程实际占用的物理内存。例如,一个程序可能加载了大量的共享库,即使它只使用了其中一小部分功能,这些库的全部虚拟地址空间也会计入
    VIRT
    。所以,
    VIRT
    值很高并不一定意味着进程消耗了大量的物理内存,它更多地反映了进程的地址空间布局。

  • RES (Resident Set Size)

    RES
    是进程当前实际占用物理内存(RAM)的大小。这才是我们通常所说的“真实内存占用”。它不包括被交换到磁盘上的内存,也不包括共享给其他进程但当前未被当前进程使用的部分。当你在评估一个进程是否是“内存大户”时,
    RES
    是最关键的指标。如果
    RES
    持续增长,那很可能意味着内存泄漏或者进程确实需要大量内存来运行。

  • SHR (Shared Memory Size)

    SHR
    表示进程与其他进程共享的物理内存大小。这部分内存通常是共享库(如libc)的代码和数据。当多个进程都使用同一个共享库时,这个库的代码和数据只会在物理内存中加载一份,然后映射到每个进程的地址空间。
    SHR
    值高,说明该进程使用了较多的共享内存,这部分内存的消耗是分摊到多个进程上的,所以它并不会完全计入当前进程的独立内存开销。

简单来说,

RES
是衡量进程对系统物理内存压力的最直接指标。
VIRT
是潜力,
RES
是现实,
SHR
是共享。理解了这三者,就能更准确地判断一个进程的内存行为,避免被庞大的
VIRT
值所迷惑。在排查内存问题时,我总是先看
RES
,如果
RES
很高,再结合
SHR
来判断这部分内存是独占的还是共享的,从而更精确地定位问题。

相关专题

更多
nginx 重启
nginx 重启

nginx重启对于网站的运维来说是非常重要的,根据不同的需求,可以选择简单重启、平滑重启或定时重启等方式。本专题为大家提供nginx重启的相关的文章、下载、课程内容,供大家免费下载体验。

231

2023.07.27

nginx 配置详解
nginx 配置详解

Nginx的配置是指设置和调整Nginx服务器的行为和功能的过程。通过配置文件,可以定义虚拟主机、HTTP请求处理、反向代理、缓存和负载均衡等功能。Nginx的配置语法简洁而强大,允许管理员根据自己的需要进行灵活的调整。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

501

2023.08.04

nginx配置详解
nginx配置详解

NGINX与其他服务类似,因为它具有以特定格式编写的基于文本的配置文件。本专题为大家提供nginx配置相关的文章,大家可以免费学习。

498

2023.08.04

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

232

2024.02.23

nginx报404怎么解决
nginx报404怎么解决

当访问 nginx 网页服务器时遇到 404 错误,表明服务器无法找到请求资源,可以通过以下步骤解决:1. 检查文件是否存在且路径正确;2. 检查文件权限并更改为 644 或 755;3. 检查 nginx 配置,确保根目录设置正确、没有冲突配置等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

337

2024.07.09

Nginx报404错误解决方法
Nginx报404错误解决方法

解决方法:只需要加上这段配置:try_files $uri $uri/ /index.html;即可。想了解更多Nginx的相关内容,可以阅读本专题下面的文章。

3510

2024.08.07

nginx部署php项目教程汇总
nginx部署php项目教程汇总

本专题整合了nginx部署php项目教程汇总,阅读专题下面的文章了解更多详细内容。

24

2026.01.13

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

27

2026.01.13

c++ 根号
c++ 根号

本专题整合了c++根号相关教程,阅读专题下面的文章了解更多详细内容。

25

2026.01.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.7万人学习

Git 教程
Git 教程

共21课时 | 2.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号