厦门服务器租用>业界新闻>ps命令如何查看CPU异常进程?

ps命令如何查看CPU异常进程?

发布时间:2026/9/24 17:51:04    来源: 纵横数据

在Linux云服务器运行过程中,CPU异常占用是比较常见的问题。网站访问量突然增加、PHP程序执行异常、数据库查询压力过高、恶意脚本运行、定时任务异常等情况,都可能导致服务器CPU持续升高。

很多管理员发现CPU达到100%以后,第一时间会选择重启服务器,但重启只能暂时释放资源,并不能真正找到问题来源。如果没有定位具体占用CPU的进程,服务器可能很快再次出现高负载。

在Linux系统中,ps命令是排查CPU异常进程的重要工具之一。通过合理使用ps命令,可以快速查看哪些程序正在消耗CPU资源,进一步判断是正常业务压力还是异常程序导致的问题。

一、为什么需要使用ps命令排查CPU异常进程

Linux服务器中运行着大量后台服务,例如Nginx、PHP-FPM、MySQL、Redis、定时任务以及各种系统进程。

当CPU出现异常时,仅仅通过服务器面板查看CPU百分比,只能知道资源紧张,却无法准确判断:

哪个进程占用CPU。

哪个用户启动了该进程。

进程对应哪个程序。

进程运行时间是否异常。

是否存在多个相同异常进程。

例如:

一台运行PHP网站的云服务器,平时CPU使用率保持在30%左右,突然升高到95%以上。

管理员查看宝塔监控后发现CPU异常,但是无法确定原因。

通过ps命令查看后发现,大量php-fpm进程持续占用CPU,其中部分进程运行时间超过几个小时。

进一步分析PHP访问日志后发现,有大量异常请求集中访问某个动态页面。

最终通过限制异常访问并优化程序代码解决问题。

因此,CPU异常排查的关键不是降低CPU,而是找到消耗CPU的具体进程。

二、使用ps查看当前CPU占用进程

Linux系统中,最常用的查看CPU进程命令:

ps aux

执行后,可以看到服务器当前所有运行进程。

输出内容通常包含:

USER:进程所属用户。

PID:进程编号。

%CPU:CPU占用比例。

%MEM:内存占用比例。

VSZ:虚拟内存使用量。

RSS:实际占用物理内存。

STAT:进程状态。

START:启动时间。

TIME:累计占用CPU时间。

COMMAND:执行命令。

其中最重要的是:

%CPU

PID

COMMAND

例如:

root  3256  85.5  2.1  php-fpm

表示PID为3256的PHP-FPM进程,占用了85.5%的CPU。

此时就需要继续分析该PHP进程为什么持续消耗资源。

三、按照CPU使用率排序查看异常进程

服务器进程较多时,直接查看ps aux会产生大量信息,不方便定位。

可以结合sort命令进行排序:

ps aux --sort=-%cpu

该命令会按照CPU占用率从高到低排列。

排在前面的就是当前消耗CPU最多的进程。

例如:

root      1258  98.2  php-fpm
mysql     2356  75.4  mysqld
www       4521  60.1  nginx

通过排序后,可以快速发现:

PHP程序是否异常。

MySQL是否压力过大。

是否存在未知程序占用资源。

对于CPU突然满载的服务器,这个命令通常可以快速找到第一批重点排查对象。

四、结合PID进一步分析异常进程

找到CPU异常进程后,需要根据PID进一步确认详细信息。

例如:

ps -ef | grep PID

假设发现:

PID 3256

执行:

ps -ef | grep 3256

可以查看该进程启动命令。

例如:

正常PHP进程:

php-fpm: pool www

说明属于PHP网站程序。

异常情况:

/usr/bin/.hidden/script.sh

或者:

/tmp/update

这种隐藏目录运行的程序,就需要重点检查。

很多服务器被植入恶意脚本后,会通过隐藏文件名伪装系统进程,持续消耗CPU资源。

五、查看PHP-FPM异常CPU进程

对于PHP网站服务器,PHP-FPM是最容易造成CPU异常的服务之一。

执行:

ps aux | grep php-fpm

可以查看所有PHP进程。

例如:

www  8567  95.0 php-fpm: pool www
www  8568  92.5 php-fpm: pool www

如果大量PHP-FPM进程CPU持续升高,通常可能存在:

网站访问量突然增加。

某个PHP页面执行时间过长。

程序存在死循环。

采集程序请求过多。

恶意扫描动态页面。

解决方法:

首先查看Nginx访问日志:

tail -f /www/wwwlogs/access.log

观察是否存在大量重复请求。

其次检查PHP慢日志:

slowlog

找到执行时间过长的PHP脚本。

最后优化:

限制异常请求。

优化代码逻辑。

增加缓存。

调整PHP-FPM参数。

例如:

某蜘蛛池服务器CPU长期100%,通过ps发现大量PHP-FPM进程占用CPU。

继续查看访问日志发现,大量非搜索引擎IP访问动态PHP入口。

限制异常访问后,PHP进程数量明显下降,CPU恢复正常。

六、查看MySQL进程CPU占用

除了PHP,MySQL也是常见CPU异常来源。

执行:

ps aux | grep mysql

如果发现:

mysql  2458  90.0 mysqld

说明数据库正在大量消耗CPU。

常见原因:

SQL查询效率低。

缺少索引。

慢查询过多。

数据库连接数量过高。

程序频繁读取数据。

进一步可以查看MySQL运行状态:

show processlist;

查看当前执行中的SQL。

如果发现大量相同查询长期运行,需要优化对应程序。

例如:

一个内容网站访问量增加后CPU升高。

通过ps发现mysqld占用超过80%。

分析数据库后发现文章搜索功能没有索引,每次查询都会扫描大量数据。

增加索引并优化查询后,数据库CPU恢复正常。

七、使用ps查看进程启动时间判断异常

有些异常进程并不会立即占满CPU,而是长期缓慢消耗资源。

可以使用:

ps -eo pid,ppid,cmd,%mem,%cpu,lstart --sort=-%cpu

查看:

PID。

父进程。

启动时间。

CPU占用。

内存占用。

如果发现某个陌生程序运行时间很长,并且持续占用CPU,需要进一步检查。

例如:

一个服务器凌晨CPU异常升高。

通过查看进程启动时间发现,异常程序每天凌晨固定启动。

进一步检查发现,是某个异常定时任务执行脚本导致。

删除异常任务后恢复正常。

八、结合top命令动态观察CPU变化

虽然ps命令适合查看进程信息,但是它属于一次性查看。

如果需要实时观察,可以结合:

top

或者:

top -c

其中:

top -c

可以显示完整进程命令。

这样可以看到程序具体执行路径。

例如:

普通:

php-fpm

详细:

php-fpm: pool www /www/wwwroot/example.com/index.php

排查网站CPU问题时,更容易定位具体业务。

九、发现异常CPU进程后的处理方式

找到CPU异常进程后,不建议立即强制结束。

应该按照以下流程处理:

第一,确认进程是否属于正常业务。

例如:

PHP-FPM高CPU可能是访问量增加,也可能是程序异常。

MySQL高CPU可能是正常查询,也可能是慢SQL。

第二,分析产生原因。

查看日志。

查看访问记录。

检查代码。

检查计划任务。

第三,采取针对性优化。

如果是恶意程序:

结束进程。

删除恶意文件。

检查安全漏洞。

如果是网站访问压力:

优化程序。

增加缓存。

调整PHP-FPM。

如果是数据库问题:

优化SQL。

增加索引。

调整数据库配置。

只有找到根本原因,才能避免CPU再次异常。

总结

ps命令是Linux服务器CPU异常排查中非常实用的工具,通过查看进程列表、CPU排序、PID分析以及程序路径,可以快速定位服务器资源消耗来源。

在实际运维过程中,CPU升高并不可怕,关键是找到导致资源异常的具体进程。无论是PHP-FPM占用过高、MySQL查询压力、异常脚本运行,还是恶意访问造成负载增加,都可以通过ps命令结合日志分析进行精准定位。

掌握正确的排查流程,可以减少服务器故障恢复时间,提高网站运行稳定性,让云服务器长期保持良好的性能状态。

纵横云服务器租赁,欢迎随时联系,客服联系方式:QQ3494196421,手机微信19906048601。


在线客服
微信公众号
免费拨打0592-5580190
免费拨打0592-5580190 技术热线 0592-5580190 或 18950029502
客服热线 17750597993
返回顶部
返回头部 返回顶部