找回密码
 加入怎通
查看: 592|回复: 2

[其他] centos 整理磁盘命令

[复制链接]
我来看看 发表于 2023-04-24 04:42:47 | 显示全部楼层 |阅读模式
好的,在 CentOS 中整理磁盘(通常指清理空间、分析使用情况、查找大文件等)有一系列常用命令。下面我将它们分门别类地为您整理出来。 2 h' [1 V4 k% Y: k$ ]3 s y4 ?" I/ H M. A# V" q ### 核心摘要 * [- n* {3 \' e; [ ! x3 k( ^3 q3 M9 y* W. @( u对于“整理磁盘”,通常包含两个层面:; M6 ?0 q# d* N9 h! c 1. **空间整理**:清理垃圾文件、删除大文件、释放磁盘空间。这主要通过一系列查找和分析命令完成。4 w3 Q" _" l2 n 2. **碎片整理**:对磁盘上的文件进行碎片整理以提高读写性能。**请注意:CentOS 默认使用的文件系统(如 ext4, XFS)通常不需要手动进行碎片整理**,它们的设计已经很好地处理了碎片问题。尤其是 XFS 文件系统,它支持在线碎片整理(如下述命令),而 ext4 的碎片整理则比较少见且需要卸载分区,风险较高。 9 ~. u3 h! D$ M1 q 1 f+ U% s2 [. h' w0 e! n3 ~---2 o" l) n$ ^( P( {* f " {5 ^+ u8 l8 d0 ~0 h### 一、磁盘空间分析命令(最常用) , D4 o% R+ G6 m* k3 V! M; W8 M; ] M/ h6 J4 J 这类命令用于快速了解磁盘空间被谁占用了。 % o) r& a( H" o' a0 k 5 V* k; s- F' u5 {( i1 S1. **`df` - 查看磁盘挂载点空间使用情况** + s# \1 T. \; A H * **功能**:查看文件系统的整体磁盘空间使用情况。2 E$ W( `1 A2 Z: T, M5 T * **常用选项**: . V9 z6 i8 |/ E2 ~ * `-h` (human-readable):以易读的格式显示(如 G, M)。 ' s `/ \& V0 t * `-T`:显示文件系统类型(如 ext4, xfs)。 , L' r1 F4 X- B8 B * **示例**: & H+ ~3 `+ f+ w$ f ```bash ( I6 Q* j- c( L& l% O df -hT3 j, e% ]( z$ o }! u/ K1 N ``` ( T% H1 q% B! ?- n( U. m * **输出解读**:重点关注 `Use%` 列,找到使用率较高的挂载点(如 `/`, `/home`)。5 C+ p- y: D5 B7 V/ [( x" n4 Q # q( X- \1 i. { 2. **`du` - 查看目录或文件的磁盘使用情况**0 m! P V$ _, W * **功能**:估算文件或目录的空间占用。' h) Z$ z5 I1 V * **常用选项**:% u. ^0 \2 ]0 k5 K" ^$ k6 k3 U) V* v * `-h`:易读格式显示。 3 A! a p! S6 \ * `-s`:仅显示总计,不显示子目录详情。, ^0 o$ M8 r5 V; y$ Q0 l * `--max-depth=N`:显示指定深度(N)的目录统计。8 l6 C! I6 i7 g * **示例**:$ d. \6 ~7 w7 r8 l" b& h ```bash ! q% u: G" [) C. W # 查看当前目录下所有一级子目录的大小 + b& H W5 X7 h. u7 C, l du -h --max-depth=1 * G) O6 u; |/ R5 I8 H; ] ) C3 i( O; ^5 Y, I- |9 i$ C # 查看 /var 目录的总大小3 G. Z, W* `6 s1 Z/ D/ F du -sh /var+ Q3 q2 L& f+ m# W. D. j( w / n1 r7 i8 i0 t4 k3 |& ? # 查找 /home 目录下最大的10个目录/文件2 H5 u. b9 y; v3 x* l du -h /home | sort -rh | head -n 10 : G% N4 i* g; e+ }' b0 z, U/ ~ ```% T: S' w& d% }1 {; j9 v' s1 E 9 ^! L6 n* y1 o3 J3. **`ncdu` - 交互式磁盘使用分析工具(强烈推荐)** 4 ^/ Y) l! d( `9 i2 { * **功能**:一个非常强大的、基于 ncurses 库的交互式磁盘分析工具。比 `du` 更直观,可以快速导航和删除文件。) `! X8 w% H7 H- Z5 [ * **安装**: " s( s7 i1 m z2 s0 ]! e ```bash5 `% v4 S! n7 T* } yum install ncdu & e* y# S" f8 ^+ F2 q5 y ```5 H6 b( X9 M2 S: C1 Y/ ^& O" Y * **使用**: ! z$ P" n' @7 O) m0 s2 R4 v ```bash& e; E2 e0 ^1 \/ ~. I+ B8 E # 分析当前目录4 r5 p7 Q5 o9 x. W ncdu, n0 C; Z$ F+ J B # 分析指定目录(如根目录)- c. x" m) D" ]7 {, x5 d$ i ncdu / ( B% T, B6 C% y! U ``` ]! d& m. B; y; j * **操作**:使用键盘 `↑` `↓` 导航,按 `d` 删除选中的文件/目录,按 `?` 查看帮助。1 ]' Y- e; N) k8 }3 B" ~ $ X! T+ h5 y! K6 J( I8 E0 F8 @3 @& i--- $ V6 J4 p$ B V6 t3 I4 k( f# Z( @! c W2 `7 e* H& Y ### 二、查找大文件命令 ' |- v6 S5 s& I% E $ I5 [$ y* |8 d# P, y当你发现某个分区空间不足时,通常需要查找并清理大文件。( \+ h1 }" w, m& p' `; K! u! q 2 s( B( E6 y2 o9 S1. **`find` - 强大的查找命令** I* _( W8 ~- q S; P6 P+ g * **示例**: - h" n7 r2 N$ E6 O7 x+ X ```bash ( X/ V% u) T! l5 U* f6 x # 在根目录 (/) 下查找大于 100M 的文件 0 b8 I% o/ a! O find / -type f -size +100M + G3 q8 J9 |$ ~4 _7 O , e; P! j3 B4 b3 f3 w6 g z q) m # 在 /var 目录下查找大于 50M 的文件并显示其大小' _0 i! J3 M" j: r1 J) L ^ find /var -type f -size +50M -exec du -h {} \;! M4 k, ^) r( L2 E9 E6 {2 S; a8 a ) {: S3 e* j+ D # 查找并删除 7 天前的 .log 文件(⚠️删除操作务必谨慎!) $ }- h1 S0 q3 [* A" e& }1 P3 S find /var/log -name "*.log" -mtime +7 -exec rm -f {} \; 4 ?/ V* k# L9 O+ K. E% t4 N ``` * T2 e3 H( |5 P0 }9 }) b0 x - O! m( I# ]1 n6 Z, z2. **`ls` - 列出文件并按大小排序** ( V9 p* V" V, A- W( f6 _% Q4 F * **示例**:/ Y$ M4 v9 o& O' c6 q5 l$ F2 K8 Q' ^/ f ```bash 2 i ?, C. R) M/ S( R. d # 列出当前目录下的文件,并按文件大小逆序排序# ^2 v. V) w8 u% [; z+ l ls -lhS9 i6 V5 H/ e/ R: {$ j" s* z # 注意:ls 命令本身不递归子目录2 [8 U6 m3 S& f" @& @ ```$ {* R; D, X! y* H! W) ?, p2 ? 0 W" ~" B, Y5 J: v. ]3 L/ p --- ' {. h$ [! \3 ^% L4 A7 K% i" R% \# H0 m* I/ h- v0 P2 Z ### 三、清理特定垃圾文件 G! j- k# D+ m/ o 9 ]3 I6 z7 V+ j( b8 f* ~系统运行会产生一些可清理的缓存或日志文件。: y8 R9 o: [6 ^8 t. _4 {( x - D" v0 P* m1 o# q 1. **清理 YUM/DNF 缓存** 5 ]' M1 \* k( n& Q! _ ```bash1 m2 K/ z) b4 S' _ B yum clean all # 对于 CentOS 7 及以下! ]$ Q' z+ x9 q* Z2 P ?* ] dnf clean all # 对于 CentOS 8 及以上 - K: r3 W7 W1 |3 ~ ``` 9 w4 ]" V* c# s" Y9 r; w' u' Q1 G" R 2. **清理日志文件 (logrotate)**" ^; s$ m% y: L6 F2 p9 `$ [# o * 系统通常使用 `logrotate` 工具自动轮转和清理日志。你也可以手动清理: * ~) T2 P; d0 n. @- k- L, x+ P ```bash 9 S# T: {3 K; x # 查看 /var/log 目录下较大的日志文件,并选择性清理6 ~% Y! |9 G6 D% t! F find /var/log -name "*.log" -size +100M" x5 O0 d; V3 k% I* L # ⚠️ 注意:不建议直接 rm 删除正在被进程写入的日志文件。 7 Y4 D( c0 j4 k) U4 a9 |. @ # 更好的方式是清空内容(例如对于 messages-old 文件):, Y. i! @: K) h: J) d5 h+ L1 ]2 P > /var/log/messages-old/ D: V# U# C: Q1 z, Y4 t3 K ```2 `6 k4 C$ x6 _; g i1 f0 o" X, [6 [" H$ w# l 3. **清理系统内存缓存(危险系数低)*** ^4 {& @+ A4 @2 `0 U" ]1 G * 这个操作**不会丢失数据**,它释放的是内核用于缓存磁盘数据的内存,必要时内核会自动重新分配。在系统内存紧张时,释放缓存可以让应用程序有更多内存可用。 9 G* |: a# E/ c: v& c- ` ```bash 7 X) t$ \2 V$ S # 释放 pagecache, dentries 和 inodes 4 {" w: R: T8 Y) O- a sync && echo 3 > /proc/sys/vm/drop_caches ( N3 }! G. n' G& R1 V ``` , z/ x2 G8 Y( N, {* c7 k * **注意**:这只是一个临时操作,主要用于测试或应急,不是常规的“磁盘整理”任务。 2 P% h, H' i' ^1 G* K0 J* @5 p3 h --- : Y0 o* N6 F6 n 8 Y4 W3 F% P- |# y2 H4 s* D### 四、文件系统碎片整理命令(特殊情况使用) 3 [0 M7 ~# C( ~& S0 M* e" V; Z **再次强调:Ext4/XFS 在日常使用中碎片化率很低,通常不需要手动整理。**- V- h7 a7 M, d" c6 O5 u ! ^& C! x! n- @- X# }1. **XFS 文件系统碎片整理** 7 M0 K5 H" L. C/ g * **检查碎片程度**: $ a3 F( b* p7 b7 J" t8 I& n ```bash1 [$ p/ N' S' q# o- Q. i xfs_db -c frag -r /dev/your_device 4 y3 P$ a7 k' y4 l ```% q/ v5 {/ D+ I; z l% H6 i+ {/ ? * **在线整理**:* k5 F- T2 J3 Z ```bash8 J; r& _( Z2 o2 ] xfs_fsr /dev/your_device ' M- e6 I; h T% S # 或者直接整理挂载点* G7 B* W/ {1 s( |$ m xfs_fsr /your/mount/point/ b# U' i, W3 L/ x ```0 J& ?! s6 V# C) X, u9 P l/ l' Z+ N$ E: O/ f6 K% ^' u 2. **Ext4 文件系统碎片整理** 9 j9 R' l5 ^0 X6 H- p * Ext4 的整理非常麻烦且风险高,需要卸载分区。**极不推荐**在生产环境中使用。工具是 `e4defrag`。& X; n/ N& b( A: h M9 E S# P+ n! Q' L: Y9 S# p8 o---1 f; Q4 ^8 N1 J( C R. } % L6 }1 o/ _4 ?# n: H0 o, _5 u### 整理流程总结' B9 n. K. Q" r7 k' d) d 6 N. t9 `- f, w R* O1. **发现问题**:使用 `df -h` 查看哪个分区空间不足(例如 `/` 使用率 90%)。- a5 q% w7 O3 \7 \ 2. **定位问题**:使用 `du -sh /* | sort -rh` 或 `ncdu /` 定位到是哪个目录占用了大量空间(例如 `/var`)。/ ?' K3 R2 ~8 X9 m5 h* J$ E u+ _1 w 3. **深入分析**:进入该目录(`cd /var`),继续使用 `du` 或 `ncdu` 向下分析(例如发现是 `/var/log` 很大)。 \# @) F6 H' h) O% e4. **查找目标**:在目标目录中使用 `find` 或 `ls` 查找大文件或旧文件(例如发现一个巨大的 `application.log`)。 & J8 D$ P' M) a6 {5. **采取行动**: & U8 K$ d5 C) Q. a * 如果是日志文件,可以清空(`> application.log`)或配置 `logrotate`。- O9 I, d. d8 b# ?' G: Q& S8 x * 如果是缓存文件,可以安全删除。/ E% C: N% @6 y9 \5 l2 q7 Y; d * 如果是应用程序产生的无用数据,联系开发者确认后删除。 I$ h+ j8 K& Y 6. **确认结果**:再次使用 `df -h` 确认空间是否已释放。" B+ w9 B7 W$ S3 F; Q " U. F) Y* A6 t 希望这份详细的整理对您有帮助!始终记住,**删除文件前务必确认其用途**,以免误删重要数据。
回复

使用道具 举报

leonseo444 发表于 2025-11-08 10:30:35 | 显示全部楼层
楼主辛苦了,整理这么多内容,必须点赞收藏
回复 支持 反对

使用道具 举报

林流萤 发表于 2026-02-01 02:17:58 | 显示全部楼层
说得很实在,没有夸大其词,这种真实分享太难得了
回复 支持 反对

使用道具 举报

    您需要登录后才可以回帖 登录 | 加入怎通

    本版积分规则

    QQ|手机版|小黑屋|网站地图|真牛社区 ( 苏ICP备2023040716号-2 )

    GMT+8, 2026-3-25 08:50 , Processed in 0.322033 second(s), 22 queries , Gzip On.

    免责声明:本站信息来自互联网,本站不对其内容真实性负责,如有侵权等情况请联系420897364#qq.com(把#换成@)删除。

    Powered by Discuz! X3.5

    快速回复 返回顶部 返回列表