Linux 限制进程资源最佳实践(新手必看) Linux

做Linux开发这几年,限制进程资源是被身边同事问得最多的问题之一。今天把答案整理出来,供大家参考。


emer 发布于  2026-10-12 07:04 

Linux awk处理文本案例讲解(新手必看) Linux

如果你正在学习Linux,那么awk处理文本几乎是绕不开的一个环节。本文从原理到实践,带你快速上手。


emer 发布于  2026-10-11 07:09 

Linux 批量结束进程案例讲解(附代码示例) Linux

批量结束进程是Linux开发者必须掌握的基础技能之一。掌握它不仅能提升开发效率,还能避免很多隐蔽的 Bug。


emer 发布于  2026-10-11 07:09 

Linux zip解压中文乱码进阶技巧分享(2026最新整理) Linux

很多初学者在学习Linux时,都会遇到zip解压中文乱码相关的问题。网上的资料零散且质量参差不齐,本文尝试用一篇文章把zip解压中文乱码讲清楚。


emer 发布于  2026-10-11 07:09 

Linux SSH免密登录实战详解(完整版) Linux

很多初学者在学习Linux时,都会遇到SSH免密登录相关的问题。网上的资料零散且质量参差不齐,本文尝试用一篇文章把SSH免密登录讲清楚。


emer 发布于  2026-10-11 07:08 

Linux sudo权限配置案例讲解(完整版) Linux

最近在项目里又遇到了sudo权限配置的典型问题,索性把解决方法整理成这篇文章,希望能帮到遇到同样问题的同学。


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

Linux 挂载数据盘最佳实践(附代码示例) Linux

做Linux开发这几年,挂载数据盘是被身边同事问得最多的问题之一。今天把答案整理出来,供大家参考。


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

Linux rsync同步目录进阶技巧分享(新手必看) Linux

同样是rsync同步目录,不同的实现方式在性能和可维护性上差别很大。本文对比几种常见写法,并给出推荐方案。


emer 发布于  2026-10-11 07:06 

Linux 实时跟踪日志输出入门教程(完整版) Linux

熟练掌握实时跟踪日志输出,是写好Linux代码的基本功。本文循序渐进,从概念到示例一次讲透。


emer 发布于  2026-10-11 07:04 

Linux awk处理文本常见问题汇总(新手必看) Linux

最近在项目里又遇到了awk处理文本的典型问题,索性把解决方法整理成这篇文章,希望能帮到遇到同样问题的同学。


emer 发布于  2026-10-11 07:02 

Linux sudo权限配置核心用法解析(新手必看) Linux

熟练掌握sudo权限配置,是写好Linux代码的基本功。本文循序渐进,从概念到示例一次讲透。


emer 发布于  2026-10-10 08:24 

Linux 查看磁盘IO避坑指南(建议收藏) Linux

很多线上 Bug 的根源,都在于对查看磁盘IO的理解不够深入。本文从常见错误出发,反推正确的使用姿势。


emer 发布于  2026-10-10 08:20 

Linux systemd管理服务最佳实践(完整版) Linux

很多线上 Bug 的根源,都在于对systemd管理服务的理解不够深入。本文从常见错误出发,反推正确的使用姿势。


emer 发布于  2026-10-10 08:19 

Linux 批量结束进程最佳实践(完整版) Linux

批量结束进程看似简单,实际使用中却有不少细节需要注意。本文把常见场景和坑点都列出来,方便随时查阅。


emer 发布于  2026-10-10 08:17 

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

前言

服务器突然卡了?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

前言

网站突然打不开了?SSH连不上了?一查磁盘100%满了!本文讲怎么查找大文件、清理磁盘空间。

一、查看磁盘使用情况

df命令

df -h

输出:

Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        40G   38G  2.0G  95% /

看什么:

  • Use%:使用率,超过90%就要注意了
  • Avail:可用空间

查看当前目录占用

du -sh

二、查找大文件

查找大于100M的文件

find / -type f -size +100M 2>/dev/null

解释:

  • /:从根目录开始找
  • -type f:只找文件
  • -size +100M:大于100M
  • 2>/dev/null:忽略错误信息

查找大于1G的文件

find / -type f -size +1G 2>/dev/null

按大小排序

find / -type f -size +100M 2>/dev/null | xargs du -h | sort -rh

三、查找大目录

查看各目录大小

du -sh /*

一级一级往下找

du -sh /var/*
du -sh /var/log/*
du -sh /var/lib/*

查看前10大目录

du -sh /* | sort -rh | head -10

四、常见大文件位置

1. 日志文件

/var/log/
/var/log/messages
/var/log/nginx/
/var/log/mysql/

2. 临时文件

/tmp/
/var/tmp/

3. 邮件

/var/spool/mail/

4. 数据库文件

/var/lib/mysql/

5. Docker镜像

/var/lib/docker/

6. 上传文件

/www/wwwroot/
/var/www/html/

五、清理方法

清理日志文件

方法1:清空文件

> /var/log/messages

方法2:删除旧日志

find /var/log -name "*.log" -mtime +30 -delete

删除30天前的日志。

清理yum缓存

yum clean all

清理Docker

docker system prune -a

清理临时文件

rm -rf /tmp/*

注意: 正在用的文件别删。

清理旧内核

package-cleanup --oldkernels --count=1

六、查看文件被谁占用

问题: 删了文件但磁盘没释放?

原因: 有进程还在写这个文件。

查看被删除但还被占用的文件

lsof | grep deleted

重启相关进程

systemctl restart nginx

七、常见坑

坑1:删了文件但空间没释放

原因: 进程还在写这个文件。

解决: 重启进程,或者用> 文件名清空。

坑2:日志一直涨

解决: 配置logrotate日志切割。

坑3:Docker占了很多空间

docker system df

清理:

docker system prune -a

八、自动清理脚本

写个脚本定期清理:

#!/bin/bash
# 清理30天前的日志
find /var/log -name "*.log" -mtime +30 -delete
# 清理yum缓存
yum clean all
# 清理Docker
docker system prune -f

加到crontab:

0 3 * * * /bin/bash /root/clean.sh

总结

记住:

  1. 用df -h看磁盘使用率
  2. 用du -sh /*看哪个目录大
  3. 用find / -size +100M找大文件
  4. 先看日志,再看Docker,再看临时文件
  5. 删文件前确认不用了
  6. 删了没释放就重启进程

最常用:

df -h
du -sh /*
find / -type f -size +100M 2>/dev/null

遇到问题加QQ23979811 协助处理


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

Linux查看端口被占用,lsof和netstat命令 Linux

前言

启动服务的时候报"Address already in use"?想知道某个端口被哪个进程占了?Linux查看端口占用最常用的就是lsof和netstat命令,本文讲清楚。

一、为什么要查端口

  • 启动服务报端口被占
  • 看某个服务有没有启动
  • 排查安全问题,看有没有可疑端口

二、lsof命令

查看某个端口被哪个进程占用

lsof -i:端口号

例子: 查80端口

lsof -i:80

输出:

COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx   1234  root    6u  IPv4  12345      0t0  TCP *:http (LISTEN)

看什么:

  • COMMAND:进程名(nginx)
  • PID:进程ID(1234)
  • USER:运行用户(root)

查看所有TCP端口

lsof -i tcp

查看所有UDP端口

lsof -i udp

杀掉占用端口的进程

kill -9 $(lsof -ti:80)

三、netstat命令

查看某个端口

netstat -tlnp | grep 端口号

例子: 查80端口

netstat -tlnp | grep :80

输出:

tcp  0  0  0.0.0.0:80  0.0.0.0:*  LISTEN  1234/nginx

看什么:

  • 最后一列:进程ID/进程名(1234/nginx)

参数解释

参数 含义
-t TCP端口
-l 只看监听中的
-n 显示数字,不解析域名
-p 显示进程名和PID

查看所有监听端口

netstat -tlnp

四、ss命令(推荐)

ss是netstat的升级版,更快。

查看某个端口

ss -tlnp | grep 端口号

例子:

ss -tlnp | grep :80

查看所有监听端口

ss -tlnp

五、三种命令对比

命令 优点 缺点
lsof 信息全,能看文件 慢
netstat 经典,大家都用 慢
ss 最快,推荐 新命令

推荐: 用ss,最快。

六、常见场景

场景1:启动Nginx报端口被占

nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)

排查:

lsof -i:80

解决: 杀掉占用的进程

kill -9 进程ID

场景2:看MySQL有没有启动

ss -tlnp | grep 3306

有输出就是启动了。

场景3:看SSH端口

ss -tlnp | grep sshd

七、常见坑

坑1:没加sudo看不到进程

普通用户只能看自己的进程,看不到别人的。

解决: 加sudo

sudo lsof -i:80
sudo netstat -tlnp

坑2:netstat命令找不到

CentOS7最小化安装没有netstat。

安装:

yum install -y net-tools

坑3:lsof命令找不到

安装:

yum install -y lsof

八、常用命令汇总

# 查80端口被谁占了
lsof -i:80
netstat -tlnp | grep :80
ss -tlnp | grep :80

# 看所有监听端口
netstat -tlnp
ss -tlnp

# 杀掉占用80端口的进程
kill -9 $(lsof -ti:80)

总结

记住:

  1. 查端口用 lsof -i:端口号
  2. 或者用 ss -tlnp | grep 端口号
  3. 看最后一列就是进程名和PID
  4. 杀掉用 kill -9 进程ID
  5. 推荐用ss,最快

最常用:

ss -tlnp | grep :80

遇到问题加QQ23979811 协助处理


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

Linux查看系统负载,uptime和w命令详解 Linux

前言

服务器卡不卡,先看负载。Linux看系统负载最常用的就是uptime和w命令,一行输出就能看到系统跑了多久、现在有多少人登录、负载高不高。本文讲怎么看这些信息。

一、uptime命令

直接敲

uptime

输出:

 07:39:01 up 35 days,  2:15,  2 users,  load average: 0.08, 0.03, 0.00

逐个解释

字段 含义
07:39:01 当前时间
up 35 days, 2:15 系统运行了35天2小时15分
2 users 当前有2个用户登录
load average: 0.08, 0.03, 0.00 系统负载,分别是1分钟、5分钟、15分钟

负载怎么看

load average三个数:

  • 第一个:最近1分钟的平均负载
  • 第二个:最近5分钟的平均负载
  • 第三个:最近15分钟的平均负载

判断标准:

负载值 状态
0.00-0.70 正常
0.70-1.00 注意一下
1.00-2.00 有点高
2.00以上 很高了,要排查

注意: 负载和CPU核数有关。比如4核CPU,负载4.00才是满。

看CPU核数

nproc
# 4

或者:

cat /proc/cpuinfo | grep processor | wc -l
# 4

判断: 负载小于CPU核数就是正常的。

二、w命令

直接敲

w

输出:

 07:39:01 up 35 days,  2:15,  2 users,  load average: 0.08, 0.03, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    1.2.3.4          07:35    5.00s  0.03s  0.00s w
www      pts/1    5.6.7.8          07:30    8:12   0.01s  0.01s -bash

逐个解释

第一行和uptime一样。

下面是登录用户列表:

字段 含义
USER 用户名
TTY 终端类型(pts/0表示远程连接)
FROM 从哪个IP登录的
LOGIN@ 登录时间
IDLE 空闲时间
JCPU 整个终端所有进程用的CPU时间
PCPU 当前进程用的CPU时间
WHAT 当前在跑什么命令

三、其他查看命令

who命令

看谁登录了:

who

输出:

root     pts/0        2026-10-09 07:35 (1.2.3.4)
www      pts/1        2026-10-09 07:30 (5.6.7.8)

last命令

看登录历史:

last

输出最近登录的记录。

lastb命令

看失败的登录:

lastb

四、负载高了怎么排查

第一步:看CPU

top

按P按CPU排序,看哪个进程占CPU多。

第二步:看内存

free -h

看内存够不够,有没有用swap。

第三步:看磁盘

df -h

看磁盘满了没。

第四步:看IO

iostat

看磁盘IO高不高。

五、常见坑

坑1:负载高不代表CPU高

负载包括:

  • 正在用CPU的进程
  • 等着CPU的进程
  • 等着磁盘IO的进程

可能是磁盘IO高,CPU不高,但负载也高。

坑2:负载和核数对比

1核CPU,负载1.0就是满了。
4核CPU,负载4.0才是满了。

别光看数字,要看CPU核数。

坑3:三个负载数的区别

  • 1分钟高,5分钟、15分钟不高:可能是突然有个进程跑了一下
  • 15分钟都高:说明系统一直很忙

总结

记住:

  1. uptime 看系统运行时间和负载
  2. w 看谁登录了、在干嘛
  3. 负载三个数:1分钟、5分钟、15分钟
  4. 负载要和CPU核数对比
  5. 负载高了用top、free、df、iostat排查

最常用:

uptime    # 看负载
w         # 看谁在登录
top       # 看哪个进程占CPU

遇到问题加QQ23979811 协助处理


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

Linux 查看内存使用 Linux

Linux 查看内存使用

服务器内存不够用的时候,得知道谁在吃内存。

1. free 命令

最常用的查看内存命令:

free -h

输出说明:

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

注意: 不要只看 free,要看 available。Linux 会用空闲内存做缓存,这是好事。

2. top 命令

实时查看内存占用:

top

常用操作:

  • 按 M 按内存排序
  • 按 P 按CPU排序
  • 按 q 退出

重点看:

  • %MEM:进程内存占用百分比
  • RES:进程实际占用物理内存

3. ps 命令

查看进程内存占用:

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

输出说明:

  • USER:进程用户
  • %MEM:内存占用
  • RSS:实际物理内存(KB)
  • COMMAND:进程命令

4. vmstat 命令

查看整体内存和CPU:

# 每秒刷新一次
vmstat 1

重点列:

  • swpd:交换分区使用
  • free:空闲内存
  • buff:缓冲区
  • cache:缓存
  • si:换入内存
  • so:换出内存

注意: si 和 so 大于0说明内存不够,在用swap。

5. /proc/meminfo

查看详细内存信息:

cat /proc/meminfo

重点看:

  • MemTotal:总内存
  • MemFree:空闲内存
  • MemAvailable:可用内存
  • Buffers:缓冲区
  • Cached:缓存
  • SwapTotal:交换分区总量
  • SwapFree:交换分区空闲

6. 缓存说明

Linux 内存缓存机制:

  • 空闲内存用来做文件缓存
  • 程序需要时会自动释放
  • cached 高不是坏事
  • available 才是真正可用的

7. 内存不够怎么办

1)找出吃内存的进程

ps aux --sort=-%mem | head

2)重启大内存进程

  • 确认是哪个进程
  • 重启释放内存

3)清理缓存

# 清理页面缓存
echo 1 > /proc/sys/vm/drop_caches

# 清理目录项和inode
echo 2 > /proc/sys/vm/drop_caches

# 全部清理
echo 3 > /proc/sys/vm/drop_caches

4)加交换分区

  • 临时方案,治标不治本
  • 最好加物理内存

8. 常用组合命令

# 查看内存占用前5的进程
ps aux --sort=-%mem | head -6

# 查看swap使用最多的进程
for i in $(ls /proc | grep -E '^[0-9]+'); do
    awk '/VmSwap/{print $2/1024 " MB", $0}' /proc/$i/status 2>/dev/null
done | sort -nr | head

9. 监控建议

1)设置内存告警

  • 超过80%告警
  • 及时处理

2)定期检查

  • 每天看一次内存
  • 发现异常及时处理

3)不要盲目清缓存

  • 缓存是好事
  • 清缓存会降低性能

总结

Linux 查看内存使用要点:

  • free -h 看整体内存
  • top 按M看内存占用
  • ps aux 排序找大进程
  • vmstat 看swap使用
  • /proc/meminfo 看详细信息
  • 不要只看 free,要看 available
  • cached 高是好事
  • 内存不够先找大进程
  • 清缓存要谨慎
  • 最好加物理内存

学会看内存,服务器问题就好排查了。


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

Linux 查看磁盘空间 Linux

Linux 查看磁盘空间

服务器磁盘满了怎么办?这些命令帮你快速排查。

1. df 查看整体磁盘

基本用法

# 查看磁盘使用情况
df

# 人性化显示(带M、G单位)
df -h

常用参数

  • -h: 人性化显示大小
  • -T: 显示文件系统类型
  • -i: 查看 inode 使用情况
# 常用组合
df -hT

输出说明:

  • Filesystem: 磁盘分区
  • Size: 总大小
  • Used: 已用
  • Avail: 可用
  • Use%: 使用率
  • Mounted on: 挂载点

2. du 查看目录大小

查看当前目录大小

# 当前目录总大小
du -sh

# 查看指定目录
du -sh /var/log

查看子目录大小

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

# 按大小排序
du -sh * | sort -rh

常用参数

  • -s: 只显示总计
  • -h: 人性化显示
  • --max-depth=1: 只看一层
# 查看根目录下各目录大小
du -sh /* --max-depth=1

3. 查找大文件

查找大于100M的文件

find / -type f -size +100M -exec ls -lh {} \;

查找最近修改的大文件

find /var -type f -size +50M -mtime -7

4. 常见排查场景

1)磁盘满了

# 先看哪个分区满了
df -h

# 找到大目录
du -sh /* | sort -rh

2)日志占空间

# 查看日志目录大小
du -sh /var/log

# 清空大日志文件
> /var/log/large.log

3)inode满了

# 查看inode使用
df -i

5. 清理磁盘

清理日志文件

# 清空文件(不删除文件)
> /var/log/messages

# 删除旧日志
rm /var/log/*.old

清理缓存

# 清理包缓存
yum clean all

清理 Docker 没用的镜像

docker system prune -a

总结

Linux 查看磁盘空间要点:

  • df -h 查看整体磁盘使用
  • du -sh 查看目录大小
  • find 查找大文件
  • 磁盘满了先看分区,再找大目录
  • 日志文件要定期清理
  • 注意 inode 也可能满
  • 用 sort -rh 按大小排序

运维排查磁盘问题,这些命令天天用。


emer 发布于  2026-10-9 07:21 
'); })();