Linux查看目录占用 Linux

Linux查看目录占用

引言

磁盘满了先定位是哪个目录吃掉空间,df看整体分区,du逐层下钻找大户。两个命令配合,从分区到目录到文件逐级缩小范围,是磁盘排查的标准路径。

看整体分区:df

df -h

人类可读格式显示各分区总量、已用、可用、使用率,先判断是哪个挂载点满了。

看单个目录总大小

du -sh /var/log

-s汇总,-h人类可读,直接给出这个目录总共占多大。

看一级子目录大小并排序

du -h --max-depth=1 /var | sort -rh | head

只算一层子目录,sort -rh按人类可读大小倒序,head取前几名,快速定位大户。

常用简写

du -sh /var/*

列出/var下每个一级目录大小,逐层进入继续排查。

排除文件系统统计

du -shx /home

-x不跨文件系统,避免把挂载的别的盘也算进来。

看目录下文件数量

ls /var/log | wc -l

有些目录不大但文件海量,inode耗尽也会写不进,配合df -i看inode。

注意事项

  • df看分区,du看目录,先df定位再du下钻;
  • 大目录du会遍历较慢,加--max-depth限制层数;
  • 删除大文件后空间没释放,可能是进程仍持有句柄,需重启进程;
  • sort -rh依赖du输出的G/M单位;
  • /proc、/sys是虚拟文件系统,du统计无意义;
  • 日志目录优先排查,常是增长最快的大户。

总结

df -h看分区整体,du -sh看单目录汇总,--max-depth=1配合sort -rh找一级大户,-x不跨文件系统,ls加wc -l看文件数,df -i查inode。排查路径是先df定位满的分区,再du逐层下钻,删文件后空间不释放要查持有句柄的进程,日志目录优先检查。


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

Linux查看系统版本 Linux

Linux查看系统版本

引言

接手一台服务器,第一件事是搞清楚发行版是CentOS、Ubuntu还是Debian、内核多少位、版本号多少,因为包管理器、软件源、命令差异都跟发行版绑定。下面几组命令覆盖发行版、内核、架构三个维度。

看发行版版本(推荐)

cat /etc/os-release

现代发行版通用,输出NAME、VERSION、PRETTY_NAME,CentOS、Ubuntu、Debian都适用。

看CentOS具体版本

cat /etc/redhat-release
# 或
rpm -q centos-release

RHEL系专用,直接显示CentOS Linux 7/8等版本号。

看Ubuntu/Debian版本

lsb_release -a
# 或
cat /etc/debian_version

lsb_release显示Distributor和Release,没装时读debian_version兜底。

看内核版本

uname -r
# 完整信息
uname -a

-r看内核版本号,-a连架构、主机名、编译时间一起输出。

看CPU架构

arch
# 或
uname -m

x86_64是64位,aarch64是ARM,选安装包时必须对应。

看系统位数和硬件

getconf LONG_BIT

输出32或64,比uname更直接回答多少位。

注意事项

  • 发行版和内核是两回事,Ubuntu 22.04可以换内核;
  • 包管理器按发行版选:CentOS用yum/dnf,Ubuntu用apt;
  • 容器内cat /etc/os-release看到的是镜像版本,不是宿主机;
  • 老系统可能没有os-release,用redhat-release或issue兜底;
  • 生产升级内核前先uname -r记录当前版本便于回退;
  • 脚本里判断发行版读/etc/os-release的ID字段最稳。

总结

cat /etc/os-release看通用发行版,redhat-release看CentOS,lsb_release看Ubuntu,uname -r看内核,arch/uname -m看架构,getconf LONG_BIT看位数。先分清发行版和内核,包管理器按发行版选,容器内读到的是镜像版本,脚本判断优先解析os-release的ID字段,升级内核前记录当前版本方便回退。


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

Linux查看CPU信息 Linux

Linux查看CPU信息

引言

服务器扩容、压测、排查性能瓶颈前,先要知道机器几颗CPU、多少核、主频和架构。/proc/cpuinfo是内核暴露的原生信息,配合lscpu、nproc能快速拿到规格,top/mpstat再看实时占用。

lscpu看汇总

lscpu

一次列出架构、颗数、每颗核数、线程数、主频、缓存,最简洁。

nproc看逻辑核数

nproc

直接输出可用逻辑CPU数,脚本里取核数最方便。

读/proc/cpuinfo

cat /proc/cpuinfo

每颗逻辑核一段,看model name型号、cpu MHz频率、flags指令集。

统计物理颗数和核数

# 物理CPU颗数
grep "physical id" /proc/cpuinfo | sort -u | wc -l
# 每颗物理核数
grep "cpu cores" /proc/cpuinfo | uniq
# 逻辑核总数
grep -c processor /proc/cpuinfo

物理颗数×每颗核数×超线程=逻辑核数。

实时CPU占用

top
mpstat 1

top看整体和进程,mpstat每秒采样看用户态、系统态、idle占比。

注意事项

  • 云主机看到的是分配的vCPU,不一定是物理独占;
  • 超线程逻辑核不等于物理性能翻倍;
  • flags里看是否支持虚拟化、AVX等指令集;
  • 排查高占用先top按P按CPU排序找进程;
  • 结合uptime看负载和核数是否匹配;
  • lscpu在大部分发行版预装,无此命令再读/proc。

总结

规格用lscpu看汇总、nproc取核数、/proc/cpuinfo读型号和指令集,配合grep统计物理颗数与核数,实时占用用top和mpstat。压测和扩容前先分清物理核、逻辑核和超线程,避免按vCPU误判真实算力。


emer 发布于  2026-10-19 07:32 

Linux查看端口占用 Linux

Linux查看端口占用

引言

启动服务时报Address already in use,说明目标端口被别的进程占着。上线前要确认端口是否监听、被哪个PID占用,常用ss、netstat、lsof三个工具,先定位进程再决定停掉还是换端口。

ss查看(推荐)

ss替代netstat,更快更全:

ss -tlnp | grep 80
  • -t TCP,-l 监听状态,-n 数字端口不解析,-p 显示进程PID和名称。
    看TCP监听端口最直接。

netstat兼容命令

老系统没有ss时:

netstat -tlnp | grep 80

参数含义和ss一致,输出本地地址:端口、PID/程序名。

lsof按端口查进程

lsof -i:80

直接列出占用80端口的进程命令、PID、用户,适合只盯单个端口。

找到并处理

确认是无用进程后:

kill -9 PID

若是被系统服务占用,优先systemctl stop对应服务,别盲目kill。

查看所有监听端口

ss -tlnp

不加grep,列出全部TCP监听,盘点机器开了哪些服务。

注意事项

  • 查端口要root或sudo,普通用户看不到别的进程PID;
  • 状态LISTEN才是监听,ESTABLISHED是已建立连接,别混淆;
  • 端口被占先判断是不是正常服务,误杀线上进程影响业务;
  • 云服务器端口不通还要查安全组和防火墙,不只是本机占用;
  • ss在新发行版预装,netstat需装net-tools。

总结

日常用ss -tlnp grep端口最省事,netstat兼容老系统,lsof -i:端口看单个占用。定位PID后先确认进程归属再kill,端口连不上时本机占用、防火墙、云安全组三层都要排查。


emer 发布于  2026-10-19 07:25 

Linux查找大文件 Linux

Linux查找大文件

引言

服务器磁盘爆满时,df先看哪个分区满,再用du一层层往下钻,找到吃掉空间的大目录和大文件。很多人只会df -h,却定位不到具体是哪个文件,这里讲完整排查链路。

第一步看分区占用

df -h

看Use%和挂载点,确认是/、/data还是/var满,别在没满的分区里瞎找。

第二步定位大目录

du -sh /* 2>/dev/null | sort -rh | head

du -sh统计每个一级目录大小,sort -rh按大小倒序,head取前几名,快速锁定大头目录,再逐层深入:

du -sh /var/* 2>/dev/null | sort -rh | head

第三步找超过100M的单文件

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

-size +100M表示大于100MB,2>/dev/null丢弃无权限报错,直接列出大文件路径和大小。

常见膨胀位置

  • /var/log:日志没轮转,单个日志几个G;
  • /tmp:临时文件没清理;
  • Docker:/var/lib/docker镜像和容器层堆积;
  • 网站上传目录、数据库binlog。

处理建议

  • 日志优先清空而不是删文件(> log.log),避免占用文件句柄不释放;
  • Docker用docker system prune清理悬空镜像;
  • 删之前确认文件没被进程占用,lsof | grep 文件名;
  • 不要直接rm正在写入的日志,用truncate -s 0截断。

注意事项

  • du统计含磁盘占用,find看文件真实大小,两者结合;
  • 根目录全盘find慢,先缩小到df定位的分区;
  • 系统目录(/usr、/lib)别乱删,只清理业务数据和日志。

总结

df -h定位满的分区,du -sh逐层排序找大目录,find -size找大文件,先看日志和Docker,清空用truncate别rm占用文件。按分区→目录→文件三层下钻,几分钟就能找到磁盘元凶。


emer 发布于  2026-10-19 07:18 

Linux防火墙配置 Linux

Linux防火墙配置

引言

云服务器安全不能只靠系统防火墙,开通端口是上线必经步骤。CentOS 7以上默认使用firewalld,很多新手忘了放行端口,导致网站、SSH、数据库从外部连不上。

firewalld常用命令

#查看防火墙状态
firewall-cmd --state

#查看已放行端口
firewall-cmd --list-ports

#永久放行80、443端口
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp

#重新加载生效
firewall-cmd --reload

#移除某个端口
firewall-cmd --permanent --remove-port=3306/tcp

区域概念

firewalld分public、internal等zone,默认public。--permanent写入永久规则,不加只对当前会话生效,重启失效。改完必须reload。

常用放行场景

  • Web服务:80、443;
  • SSH远程:22(建议改非默认端口再放行);
  • 不要对公网开放3306、6379、27017等数据库端口;
  • 只允许指定IP访问管理端口更安全:
    firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=1.2.3.4 port port=22 protocol=tcp accept'

注意事项

  • 云服务器除了系统防火墙,还要在云厂商控制台安全组同步放行;
  • 改SSH端口前先确认新端口放行,避免把自己挡在门外;
  • 防火墙规则最小化,只开放必要端口。

总结

firewalld核心:查看列表、永久加端口、reload生效。记住系统防火墙和云安全组两层都要放行,数据库端口绝不暴露公网,管理端口限制来源IP。


emer 发布于  2026-10-18 07:22 

Linux查看系统负载 Linux

Linux查看系统负载

引言

服务器CPU、内存压力过大,会造成网站接口响应缓慢、502报错。运维排查服务器性能问题第一步就是查看系统负载,了解服务器当前资源压力,及时扩容或者优化程序。

负载概念

uptime输出的三个数字:1分钟、5分钟、15分钟平均负载。代表等待CPU处理的任务数量。

多核CPU参考标准:4核服务器,负载接近4说明CPU打满;超过代表任务排队,系统过载。

常用命令

# 快速查看负载
uptime

# 实时监控
top

# 更轻量化监控
htop

# 查看CPU核心数量
nproc

top命令内可以按1查看每个核心负载;P按CPU使用率排序,快速找到耗资源进程。

排查思路

  1. 负载高,CPU使用率高:程序代码循环、大量计算,定位进程优化代码;
  2. 负载高,CPU使用率低:大量IO等待(磁盘读写慢、数据库阻塞),查看磁盘io iostat。

实操示例

# 安装iostat
yum install -y sysstat

# 持续查看io状态
iostat -x 1

总结

平均负载不只代表CPU,还包含IO等待。看到高负载不能直接判定CPU瓶颈,结合top、iostat综合定位,区分是计算密集还是IO密集导致服务器卡顿。


emer 发布于  2026-10-18 07:13 

Linux fail2ban防止暴力破解最佳实践(建议收藏) Linux

本文面向Linux初学者,用通俗的语言讲解fail2ban防止暴力破解,读完即可动手实践。


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

Linux 测试网络连通性案例讲解(新手必看) Linux

测试网络连通性是Linux开发者必须掌握的基础技能之一。掌握它不仅能提升开发效率,还能避免很多隐蔽的 Bug。


emer 发布于  2026-10-14 07:03 

Linux 查找大文件实战详解(2026最新整理) Linux

查找大文件是Linux开发者必须掌握的基础技能之一。掌握它不仅能提升开发效率,还能避免很多隐蔽的 Bug。


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

Linux 实时跟踪日志输出核心用法解析(新手必看) Linux

最近在项目里又遇到了实时跟踪日志输出的典型问题,索性把解决方法整理成这篇文章,希望能帮到遇到同样问题的同学。


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

Linux 编写systemd服务文件核心用法解析(2026最新整理) Linux

做Linux开发这几年,编写systemd服务文件是被身边同事问得最多的问题之一。今天把答案整理出来,供大家参考。


emer 发布于  2026-10-13 07:17 

Linux 磁盘空间清理完整指南(新手必看) Linux

在日常Linux开发中,磁盘空间清理是一个出现频率非常高的话题。无论是新手还是有一定经验的开发者,都可能在细节上踩坑。本文将系统地梳理磁盘空间清理的相关知识,并给出可以直接运行的示例代码。


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

Linux 修改主机名快速上手指南(建议收藏) Linux

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


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

Linux 内存不足排查避坑指南(完整版) Linux

本文面向Linux初学者,用通俗的语言讲解内存不足排查,读完即可动手实践。


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

Linux wget下载文件进阶技巧分享 Linux

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


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

Linux 配置开机自启动实战详解(2026最新整理) Linux

同样是配置开机自启动,不同的实现方式在性能和可维护性上差别很大。本文对比几种常见写法,并给出推荐方案。


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

Linux nohup后台运行进阶技巧分享(新手必看) Linux

本文面向Linux初学者,用通俗的语言讲解nohup后台运行,读完即可动手实践。


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

Linux 磁盘空间清理最佳实践(2026最新整理) Linux

面试中经常被问到的磁盘空间清理,你真的掌握了吗?本文结合实例,讲解Linux中磁盘空间清理的正确用法。


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

Linux scp传输文件实战详解(建议收藏) Linux

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


emer 发布于  2026-10-12 07:04 
'); })();