Linux查看进程占用内存最高,kill进程方法

前言

服务器内存吃紧、Swap被刷爆,往往是某个程序内存泄漏或卡死进程占着不放。要先找到"谁在吃内存",确认后再决定是优雅重启还是直接kill。本篇给出从查进程到杀进程的完整命令。

一、按内存占用排序找进程

ps 一次性列出并排序,输出RES(实际物理内存,单位KB):

# 按内存占用从高到低,取前10
ps aux --sort=-%mem | head -10
# 按CPU占用排序
ps aux --sort=-%cpu | head -10

列说明:USER 进程用户、%MEM 内存占比、RSS 实际物理内存、COMMAND 启动命令。

更直观的内存排行:

# 显示内存占用最高的进程,VSZ/RSS单位KB
ps -eo pid,ppid,user,%mem,%cpu,rss,comm --sort=-rss | head

二、用top/htop交互查看

top
# 进入后按 M 按内存排序,按 P 按CPU排序,k 输入PID杀进程,q退出

装个 htop 更清楚:

yum install -y htop
htop

三、按名字批量找进程PID

# 查php-fpm相关进程
pgrep -af php-fpm
# 或
ps -ef | grep php-fpm | grep -v grep

pgrep 只输出PID,-a 带命令行。

四、kill进程(先温柔再强杀)

# 正常结束(SIGTERM=15),给进程清理机会
kill PID
# 按名字结束所有同名进程
killall php-fpm
pkill -f "php think"
# 杀不掉再强制杀(SIGKILL=9),数据可能损坏,最后手段
kill -9 PID

信号优先级:

  • kill -15(默认):请求退出,进程可捕获;
  • kill -9:直接杀死,无法拦截。

服务类进程优先用它自己的重启命令而不是裸kill:

systemctl restart php-fpm

五、常见坑

  1. 只看%MEM不看RSS:共享内存会被重复算,判断真实占用看RSS;
  2. 上来就kill -9:数据库、日志服务强杀可能坏数据,先15再9;
  3. 杀错进程:杀之前用 ps -p PID -o cmd 确认这个PID到底是谁;
  4. 僵尸进程杀不掉:状态Z的僵尸要杀它的父进程,僵尸本身已经不占CPU只占PID表;
  5. kill完又自动起来:被systemd/守护进程托管,要用 systemctl stop 或它的管理命令,否则白杀。

总结

ps aux --sort=-%mem | head 或 top 按M排序找内存大户,确认PID后先用 kill(15)优雅结束,不行再 kill -9。服务类进程优先 systemctl restart,避免强杀造成数据损坏。

遇到问题加QQ23979811 协助处理


emer 发布于  2026-10-21 07:24 

Linux查看CPU内存负载,top命令详解

前言

服务器变慢、网站卡顿,第一反应是看 CPU 和内存谁吃满了。top 是 Linux 自带的实时监控命令,能动态看到系统负载和每个进程的占用。本篇讲清楚 top 界面每一行含义、常用按键,以及怎么判断到底是 CPU 满还是内存满。

一、启动top

top

进入动态刷新界面,默认每3秒刷新一次,按 q 退出。

二、顶部系统信息各行含义

  • 第一行:load average 三个数分别是1分钟、5分钟、15分钟平均负载,数值超过CPU核数说明忙不过来;
  • 第二行 Tasks:进程总数、运行中、睡眠、停止、僵尸进程数;
  • 第三行 CPU:%us 用户进程占用、%sy 系统内核占用、%id 空闲,id接近0说明CPU紧张;
  • 第四行 Mem:物理内存总量、已用、空闲、缓存;
  • 第五行 Swap:交换分区使用,频繁交换说明内存不足。

看核数判断负载:

nproc
# 假设2核,load average长期超过2就要警惕

三、进程列表关键列

  • PID 进程号;
  • %CPU CPU占用百分比;
  • %MEM 内存占用百分比;
  • RES 进程实际占用物理内存(KB);
  • COMMAND 启动命令。

四、常用交互按键

按键 作用
P 按CPU占用降序
M 按内存占用降序
1 展开每个核心单独显示
k 输入PID杀掉进程
q 退出
# 静态一次性输出top结果(适合脚本/采集)
top -bn1 | head -20
# 只看某个进程
top -p PID

五、判断思路

  1. CPU高:按P排序,找%CPU高的进程,常见是死循环PHP、爬虫、计算任务;
  2. 内存高:按M排序看%MEM和RES,常见内存泄漏、缓存过大;
  3. 负载高但CPU不高:可能是大量I/O等待或僵尸进程,配合 iostat、vmstat 看;
  4. Swap被大量使用:物理内存不够,系统把内存换到磁盘,会明显变慢。

常见坑

  1. 把load average绝对值当指标:要结合核数,1核负载3和8核负载3完全不同;
  2. 只看%CPU不看持续时间:瞬时冲高正常,持续90%以上才是问题;
  3. RES和SHR混淆:RES是独占物理内存,判断内存占用看RES;
  4. 僵尸进程多:Z 状态,父进程没回收,需要找父进程处理。

总结

top 里按P看CPU、按M看内存,先看顶部load和核数是否匹配,再定位具体进程。CPU满找%CPU高的,内存满找%MEM高的,再决定优化或kill。

遇到问题加QQ23979811 协助处理


emer 发布于  2026-10-20 07:28 

Linux查看进程占用CPU,top和ps命令

前言

服务器突然卡了?CPU跑满了?想知道哪个进程占CPU最多?本文讲top和ps命令,帮你快速定位问题进程。

一、top命令 — 实时监控

启动top

top

top界面说明

第一行:

  • 系统时间、运行时间、登录用户数、负载(1/5/15分钟)

第二行:

  • 任务总数、运行中、睡眠中、停止、僵尸进程

第三行(CPU):

  • us:用户态占用
  • sy:内核态占用
  • id:空闲

第四行(内存):

  • total:总内存
  • used:已用
  • free:空闲

进程列表:

  • PID:进程ID
  • USER:运行用户
  • %CPU:CPU占用
  • %MEM:内存占用
  • COMMAND:进程名

top常用快捷键

快捷键 作用
P 按CPU排序
M 按内存排序
k 杀掉进程
q 退出
1 显示每个CPU核心

只看某个进程

top -p 进程ID

二、ps命令 — 查看进程快照

查看所有进程

ps aux

按CPU排序

ps aux --sort=-%cpu | head -10

解释:

  • aux:显示所有进程
  • --sort=-%cpu:按CPU降序
  • head -10:只看前10个

按内存排序

ps aux --sort=-%mem | head -10

查找特定进程

ps aux | grep nginx

三、查找占用CPU最高的进程

方法1:用top

top

按P,按CPU排序,第一个就是占用最高的。

方法2:用ps

ps aux --sort=-%cpu | head -5

输出:

USER  PID  %CPU  %MEM  COMMAND
root  1234  50.0  10.0  php-fpm

四、查找占用内存最高的进程

ps aux --sort=-%mem | head -5

五、杀掉进程

根据PID杀

kill 进程ID

强制杀

kill -9 进程ID

根据进程名杀

pkill nginx

杀掉所有php-fpm

pkill php-fpm

六、常见场景

场景1:CPU跑满了

排查步骤:

  1. 用top看哪个进程CPU高
  2. 如果是php-fpm,看是不是有慢请求
  3. 如果是mysql,看是不是有慢SQL
  4. 杀掉异常进程

场景2:内存占满了

排查步骤:

  1. 用top按M排序
  2. 看哪个进程内存高
  3. 杀掉或重启

场景3:某个进程一直跑

ps aux | grep 进程名

找到PID后杀掉。

七、常见坑

坑1:top和ps看到的CPU不一样

原因: top是实时刷新的,ps是快照。

解决: 用top看实时变化。

坑2:杀了进程又起来

原因: 有守护进程自动拉起。

解决: 找到父进程一起杀,或者停掉服务。

systemctl stop php-fpm

坑3:僵尸进程

现象: 进程状态是Z(Zombie)。

原因: 子进程退出了,父进程没回收。

解决: 重启父进程。

八、常用命令汇总

# 实时监控
top

# 按CPU排序
ps aux --sort=-%cpu | head -10

# 按内存排序
ps aux --sort=-%mem | head -10

# 查找进程
ps aux | grep 进程名

# 杀进程
kill PID
kill -9 PID
pkill 进程名

九、负载怎么看

什么是负载

负载就是正在等待CPU运行的进程数。

怎么判断高不高

  • 负载 < CPU核心数:正常
  • 负载 > CPU核心数:有点忙
  • 负载 > 2倍CPU核心数:很卡

查看CPU核心数

nproc

总结

记住:

  1. 用top实时看CPU和内存
  2. 按P按CPU排序,按M按内存排序
  3. 用ps aux --sort=-%cpu找CPU最高的
  4. 用kill -9 PID杀进程
  5. 负载超过CPU核心数就有问题

最常用:

top
ps aux --sort=-%cpu | head -10
kill -9 进程ID

遇到问题加QQ23979811 协助处理


emer 发布于  2026-10-9 07:58 

Linux 查看系统资源

Linux 查看系统资源

服务器卡了慢了,得知道哪个进程占资源多。整理常用的查看命令。

1. 查看内存使用

# 查看内存使用情况
free -h

# 持续查看
free -h 1

输出说明:

  • total:总内存
  • used:已使用
  • free:空闲
  • buff/cache:缓存
  • available:可用

2. 查看 CPU 负载

# 查看 CPU 信息
top

# 按 q 退出

top 常用快捷键:

  • P:按 CPU 排序
  • M:按内存排序
  • 1:查看每个核心

3. 查看磁盘使用

# 查看磁盘空间
df -h

# 查看目录大小
du -sh /www/

# 查看当前目录下每个文件大小
du -sh *

4. 查看进程

# 查看所有进程
ps aux

# 查看 PHP 进程
ps aux | grep php

# 查看端口占用
netstat -tlnp

5. 查看系统信息

# 查看系统版本
cat /etc/os-release

# 查看内核版本
uname -a

# 查看 CPU 核心数
nproc

# 查看内存大小
cat /proc/meminfo | head -5

6. 查找大文件

# 查找大于100M的文件
find / -type f -size +100M

# 查找最近7天修改的文件
find /www -type f -mtime -7

7. 常用场景

网站卡了:

  1. top 看 CPU 和内存
  2. df -h 看磁盘满没满
  3. 看日志

内存不够用:

  1. free -h 看内存
  2. top 按 M 排序找占内存大的进程

总结

常用命令记这几个:

  • 内存:free -h
  • CPU:top
  • 磁盘:df -h / du -sh
  • 进程:ps aux
  • 端口:netstat

做运维这些命令天天用,必须熟。


emer 发布于  2026-10-8 07:07 

Linux查看进程占用内存最高,kill进程方法

前言

服务器内存用满了,不知道哪个进程占的?找到之后怎么杀掉?本文就讲一下怎么查看占用内存最高的进程,以及怎么 kill 掉。

查看内存占用

top 命令(最常用)

top

打开后默认按 CPU 排序,按 M 键(大写)就会按内存排序。

输出里重点看:

  • PID:进程号
  • USER:运行用户
  • %MEM:内存占用百分比
  • RES:实际用的物理内存(KB)

按 q 退出。

ps 命令

一行命令直接看内存占用前 10:

ps aux --sort=-%mem | head -10

输出按内存从大到小排,前 10 个就是最占内存的。

只看进程名和 PID

ps aux --sort=-%mem | head -10 | awk '{print $2, $11}'

只显示 PID 和进程名,更简洁。

kill 杀掉进程

kill 命令

先从 top 或 ps 里找到进程 PID,然后:

kill 进程号

比如杀掉 PID 为 1234 的进程:

kill 1234

kill -9 强制杀

有时候 kill 没用,进程就是不死,用 -9 强制杀:

kill -9 1234

注意: -9 是强杀,进程没机会清理资源,可能导致数据丢失。尽量先试普通 kill,不行再 -9。

pkill 按名字杀

不用找 PID,直接按进程名杀:

pkill nginx

杀掉所有叫 nginx 的进程。

killall 杀同名进程

killall nginx

和 pkill 类似,也是按名字杀。

常用操作示例

找出最占内存的进程并杀掉

# 找前5个最占内存的
ps aux --sort=-%mem | head -5

# 假设 PID 是 1234,杀掉
kill 1234

杀掉所有 php-fpm 进程

pkill php-fpm

杀掉某个用户的所有进程

pkill -u www

常见坑

坑1:杀错进程了

把系统关键进程杀了,服务器直接挂。

解决: 杀之前先确认一下这个进程是干嘛的:

ps -p 进程号 -o comm=

或者:

ls -l /proc/进程号/exe

坑2:kill 了进程又自动起来了

杀掉之后过几秒又自动启动了。

原因: 有服务管理工具(systemd、supervisor)在监控,挂了就自动拉起。

解决: 先停服务再杀:

systemctl stop nginx

或者:

supervisorctl stop nginx

坑3:kill 没权限

普通用户杀不了 root 启动的进程。

解决: 加 sudo 或切 root:

sudo kill 1234

总结

命令 作用
top 实时看进程,按 M 按内存排序
ps aux --sort=-%mem 按内存排序看进程
kill 进程号 正常杀进程
kill -9 进程号 强制杀进程
pkill 进程名 按名字杀进程
killall 进程名 杀同名所有进程

服务器内存爆了就用 top 按 M 排序,找到最占内存的杀掉就行。

遇到问题加QQ23979811 协助处理


emer 发布于  2026-10-6 07:41 

Linux 进程管理命令

Linux 进程管理常用命令

服务器上跑了多少进程?哪个进程占内存多?怎么杀进程?这些命令必须会。

1. 查看进程

# 查看所有进程
ps aux

# 查找指定进程
ps aux | grep nginx

# 实时查看
top

2. top 命令详解

top 是最常用的进程查看工具:

  • 第一行:系统负载
  • 第二行:任务数
  • 第三行:CPU 使用率
  • 第四行:内存使用
  • 第五行:Swap 使用

按 q 退出,按 k 杀进程。

3. 杀进程

# 按 PID 杀
kill 1234

# 强制杀
kill -9 1234

# 按名字杀
pkill nginx

# 杀掉所有同名进程
killall nginx

4. 查看端口占用

# 查看端口被谁占了
netstat -tlnp | grep 80

# 或者用 ss
ss -tlnp | grep 80

5. 查看进程树

# 查看进程父子关系
pstree

# 查看某个进程的子进程
pstree -p 1234

6. 后台运行

# 后台运行
nohup ./script.sh &

# 查看后台任务
jobs

# 把任务调到前台
fg %1

7. 查看资源占用

# 内存占用排行
ps aux --sort=-%mem | head

# CPU 占用排行
ps aux --sort=-%cpu | head

总结

日常运维就这几个命令:ps、top、kill、netstat、nohup。学会这些,服务器进程管理基本够用了。


emer 发布于  2026-10-4 10:38 
'); })();