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逐层下钻,删文件后空间不释放要查持有句柄的进程,日志目录优先检查。
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字段,升级内核前记录当前版本方便回退。
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误判真实算力。
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,端口连不上时本机占用、防火墙、云安全组三层都要排查。
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占用文件。按分区→目录→文件三层下钻,几分钟就能找到磁盘元凶。
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。
Linux查看系统负载 Linux
Linux查看系统负载
引言
服务器CPU、内存压力过大,会造成网站接口响应缓慢、502报错。运维排查服务器性能问题第一步就是查看系统负载,了解服务器当前资源压力,及时扩容或者优化程序。
负载概念
uptime输出的三个数字:1分钟、5分钟、15分钟平均负载。代表等待CPU处理的任务数量。
多核CPU参考标准:4核服务器,负载接近4说明CPU打满;超过代表任务排队,系统过载。
常用命令
# 快速查看负载
uptime
# 实时监控
top
# 更轻量化监控
htop
# 查看CPU核心数量
nproc
top命令内可以按1查看每个核心负载;P按CPU使用率排序,快速找到耗资源进程。
排查思路
- 负载高,CPU使用率高:程序代码循环、大量计算,定位进程优化代码;
- 负载高,CPU使用率低:大量IO等待(磁盘读写慢、数据库阻塞),查看磁盘io
iostat。
实操示例
# 安装iostat
yum install -y sysstat
# 持续查看io状态
iostat -x 1
总结
平均负载不只代表CPU,还包含IO等待。看到高负载不能直接判定CPU瓶颈,结合top、iostat综合定位,区分是计算密集还是IO密集导致服务器卡顿。
Linux 测试网络连通性案例讲解(新手必看) Linux
测试网络连通性是Linux开发者必须掌握的基础技能之一。掌握它不仅能提升开发效率,还能避免很多隐蔽的 Bug。
Linux 查找大文件实战详解(2026最新整理) Linux
查找大文件是Linux开发者必须掌握的基础技能之一。掌握它不仅能提升开发效率,还能避免很多隐蔽的 Bug。
Linux 实时跟踪日志输出核心用法解析(新手必看) Linux
最近在项目里又遇到了实时跟踪日志输出的典型问题,索性把解决方法整理成这篇文章,希望能帮到遇到同样问题的同学。
Linux 编写systemd服务文件核心用法解析(2026最新整理) Linux
做Linux开发这几年,编写systemd服务文件是被身边同事问得最多的问题之一。今天把答案整理出来,供大家参考。
Linux 磁盘空间清理完整指南(新手必看) Linux
在日常Linux开发中,磁盘空间清理是一个出现频率非常高的话题。无论是新手还是有一定经验的开发者,都可能在细节上踩坑。本文将系统地梳理磁盘空间清理的相关知识,并给出可以直接运行的示例代码。
Linux 配置开机自启动实战详解(2026最新整理) Linux
同样是配置开机自启动,不同的实现方式在性能和可维护性上差别很大。本文对比几种常见写法,并给出推荐方案。
Linux scp传输文件实战详解(建议收藏) Linux
很多初学者在学习Linux时,都会遇到scp传输文件相关的问题。网上的资料零散且质量参差不齐,本文尝试用一篇文章把scp传输文件讲清楚。