找回密码
 加入怎通
查看: 683|回复: 7

[其他] centos 整理磁盘命令

[复制链接]
我来看看 发表于 2023-04-24 04:42:47 | 显示全部楼层 |阅读模式
好的,在 CentOS 中整理磁盘(通常指清理空间、分析使用情况、查找大文件等)有一系列常用命令。下面我将它们分门别类地为您整理出来。0 K. F6 A9 s( f " }; C3 z' H+ l4 t9 M7 @### 核心摘要 * E4 h/ b- o6 X* |0 K( B/ w- l* \: e q9 f+ V: m! S 对于“整理磁盘”,通常包含两个层面: # a0 h1 O6 O7 L+ \: a1. **空间整理**:清理垃圾文件、删除大文件、释放磁盘空间。这主要通过一系列查找和分析命令完成。 4 f$ V+ Y; z3 C2 I" b( n/ H# d$ L2. **碎片整理**:对磁盘上的文件进行碎片整理以提高读写性能。**请注意:CentOS 默认使用的文件系统(如 ext4, XFS)通常不需要手动进行碎片整理**,它们的设计已经很好地处理了碎片问题。尤其是 XFS 文件系统,它支持在线碎片整理(如下述命令),而 ext4 的碎片整理则比较少见且需要卸载分区,风险较高。5 ^+ W k4 E, W* N - K E7 q! U+ F) g6 ?+ i% |* y--- / e) \; |' \! i; F5 H- U( k+ k1 G- J6 m* h) t8 o8 S5 d: ~$ A2 ? ` ### 一、磁盘空间分析命令(最常用) ! e3 x% J ~/ S/ K! t( Z4 V. N3 E% Q& g1 C) e0 Y N1 Y# W 这类命令用于快速了解磁盘空间被谁占用了。 5 k! E, D3 d7 O8 H& p0 P 2 g& l6 J- s. ~1. **`df` - 查看磁盘挂载点空间使用情况**' |* P- o3 P, ~* g% u8 j * **功能**:查看文件系统的整体磁盘空间使用情况。) _, a) V3 ~) @/ N k * **常用选项**: . k O( d6 ~4 o) v8 m9 Z" T& x ^2 @ * `-h` (human-readable):以易读的格式显示(如 G, M)。! @* @2 l- v' f, C * `-T`:显示文件系统类型(如 ext4, xfs)。; p2 U! y' d3 Z+ n/ g" c * **示例**:: }; D( C! A j% e* q ```bash& @$ `& @- ^0 ^& ?- Y df -hT 7 i. _' T( P. Q, Q1 E ```% ?/ v5 a0 a. y# U7 ?! ~/ | * **输出解读**:重点关注 `Use%` 列,找到使用率较高的挂载点(如 `/`, `/home`)。 2 X/ K' x6 D$ {: H* v- d$ ]8 [- m : Z$ g0 [6 W# U/ K4 U! z: S& V% Q2. **`du` - 查看目录或文件的磁盘使用情况** % q r/ `' Z" Z * **功能**:估算文件或目录的空间占用。+ ^3 m4 }& a8 x: ^ * **常用选项**: " L( d* U2 n; O * `-h`:易读格式显示。 ?8 U: h0 O+ G# ^) F * `-s`:仅显示总计,不显示子目录详情。! q3 f) h* r% l: u. _; I9 B. _, G * `--max-depth=N`:显示指定深度(N)的目录统计。 1 C. H0 p5 y( O+ w: S' q* g, T * **示例**: $ q3 k/ ~2 v* o% q0 a9 O ```bash+ Q( @ ?$ }' F; s% U) C # 查看当前目录下所有一级子目录的大小 5 I% ^$ K9 H0 n4 K+ k% \2 }9 z du -h --max-depth=16 t6 ~' t) W0 b; c8 D # l) i3 s, o7 G1 D# l% g3 v; ^ # 查看 /var 目录的总大小# P4 B* ^2 H$ e: c du -sh /var: L1 Q. ?+ N' G! T& ]9 a % c* B) x* _9 T" W # 查找 /home 目录下最大的10个目录/文件 6 x9 U) v/ s9 T du -h /home | sort -rh | head -n 102 U7 A0 A r$ O$ I: K$ z9 A" b ```7 A. O/ C$ q9 `; V ! [- F$ n# T/ H' e7 F: e8 {3. **`ncdu` - 交互式磁盘使用分析工具(强烈推荐)**2 d6 ]4 H: u+ _5 |" u/ [ * **功能**:一个非常强大的、基于 ncurses 库的交互式磁盘分析工具。比 `du` 更直观,可以快速导航和删除文件。 6 j) @4 K2 P! `' U * **安装**: $ X8 V) R8 y4 P M3 { ```bash) E1 r. E: v$ X. ? yum install ncdu/ m8 {* G' u* J2 E& k# e ```6 r- O W1 O5 ]$ W' t/ b) E' Y * **使用**:% x7 }0 g: ^; E e/ H) ^ ```bash1 G: l |$ g( Z # 分析当前目录 ; m6 D1 j1 a! G! \; C) } ncdu! B; D' S0 q2 L9 O+ R$ d # 分析指定目录(如根目录) . H) w& M1 N$ \) g, B/ m ncdu / 4 T6 q7 B( w% t ``` 0 h; `* \+ ~3 Z6 P * **操作**:使用键盘 `↑` `↓` 导航,按 `d` 删除选中的文件/目录,按 `?` 查看帮助。0 F. t+ e7 j0 Q+ v3 ] 7 w1 A9 m; F' F---! L+ y2 ?! K( ?% i% } u; l & C% }$ l% Y2 |$ e& S2 `% m ### 二、查找大文件命令 4 j8 n0 }* _/ k( k / M( q' R8 d {# ^1 u( \! M当你发现某个分区空间不足时,通常需要查找并清理大文件。. y. t O6 b1 f 8 E% u6 m4 i* X! }' i. }' B: E 1. **`find` - 强大的查找命令** 2 I" Q( E2 ~. a/ Y9 j * **示例**: * U6 Z3 {% G' S ```bash" K( J9 V X5 P6 d4 y; W # 在根目录 (/) 下查找大于 100M 的文件9 \, M( h* J, {% @ find / -type f -size +100M . h+ U* P$ G2 E" f+ Q; Y% ^; T ; a" X- m4 d; t( g+ o1 q; E6 Z # 在 /var 目录下查找大于 50M 的文件并显示其大小 2 h" ?$ [# w: W find /var -type f -size +50M -exec du -h {} \; : ^, L8 H$ n9 Z5 t # o1 T3 i: C3 v+ T* k7 q9 r7 P # 查找并删除 7 天前的 .log 文件(⚠️删除操作务必谨慎!) & b" b" T3 c4 Y, g! R, s find /var/log -name "*.log" -mtime +7 -exec rm -f {} \; 6 @6 T8 I: u9 P4 W. | ```- R1 d4 |# m5 l+ e0 X 5 C; o" w$ o3 z9 V7 m& q: m 2. **`ls` - 列出文件并按大小排序** 1 d2 V5 h7 c# w8 X, G * **示例**: v( _# V4 ^" W u4 w! M- c5 n ```bash' w" W' a; f; O5 N- H+ ^ # 列出当前目录下的文件,并按文件大小逆序排序* e- A4 [% m$ A. ]0 H3 T$ f6 } ls -lhS5 P# m( }' E% {7 q' A. g5 u # 注意:ls 命令本身不递归子目录 ( m! _2 [+ i& K5 {( i ``` + W, c1 T, v- G* i3 Q 9 N" Y" m1 C, J$ i) t--- ; W3 G; G% e1 C7 h) h! a5 e6 D6 w% W : c6 r6 h# i+ e0 r) y; S### 三、清理特定垃圾文件 " r& ~+ D6 m* _2 p) z1 a7 z s8 ?4 q( i 系统运行会产生一些可清理的缓存或日志文件。 5 w( C6 b' |3 Y# U " b, T; X# }; L5 k; G. w1. **清理 YUM/DNF 缓存**$ I6 c" X) @2 ]& V0 ?; q ```bash5 _4 p Y: R7 ~( D yum clean all # 对于 CentOS 7 及以下7 @0 `( Z/ W! _9 a( K$ x& k! C# l* \ dnf clean all # 对于 CentOS 8 及以上4 C) ]2 |( t5 }% Z) @ ``` ( L8 E6 i. m3 `+ O1 M1 h . M2 w4 N4 N5 d0 [3 \8 ^' g2. **清理日志文件 (logrotate)**+ ]& d: h0 M! q8 B4 J' z, ? * 系统通常使用 `logrotate` 工具自动轮转和清理日志。你也可以手动清理:3 B* k; u# K4 y3 g9 Q& ` ```bash9 g. F0 J0 N, B! F, B( y # 查看 /var/log 目录下较大的日志文件,并选择性清理 u6 L2 v8 t2 H find /var/log -name "*.log" -size +100M 0 Z! z3 g' M w2 t" L # ⚠️ 注意:不建议直接 rm 删除正在被进程写入的日志文件。 + z! \! R# W; t. m # 更好的方式是清空内容(例如对于 messages-old 文件): & r4 n& ?: f' i5 ~9 b) I/ N > /var/log/messages-old8 q5 C- I7 [4 D3 {+ x! h ```! `, }. }6 T+ V/ ^. _& |) i Y5 E 1 @/ g9 `1 k8 S. A, { P% D' J0 z7 }- r3. **清理系统内存缓存(危险系数低)** ; L$ H. j/ @7 A+ G * 这个操作**不会丢失数据**,它释放的是内核用于缓存磁盘数据的内存,必要时内核会自动重新分配。在系统内存紧张时,释放缓存可以让应用程序有更多内存可用。6 S" X5 \6 w0 U ```bash/ M3 T; a" Q! o! l: | # 释放 pagecache, dentries 和 inodes ( l' j* B1 }& ^4 f sync && echo 3 > /proc/sys/vm/drop_caches, L w# K1 n' o- R, T1 H- P ``` 4 [8 N) A- |& Y. o * **注意**:这只是一个临时操作,主要用于测试或应急,不是常规的“磁盘整理”任务。 , A: m1 R7 i" g/ p9 Q$ d 8 t' `6 V% I- w' g$ |# R---6 C- u1 j8 ?9 F. Q. O & H8 s6 u: C; U$ q: i3 a' d) S" C ### 四、文件系统碎片整理命令(特殊情况使用)2 z+ o$ q w+ _: A 6 L1 U/ L/ M$ o o' o- b! Z **再次强调:Ext4/XFS 在日常使用中碎片化率很低,通常不需要手动整理。** & C% _$ b; A- A- [0 ?2 c% i* h. m; D h% M' e% J' S- ^ 1. **XFS 文件系统碎片整理**! h6 A: M. \: j+ O3 P * **检查碎片程度**: , v: P& N: E3 G, O. z* o ```bash : @3 [- K) G2 Q) E _# _ xfs_db -c frag -r /dev/your_device- ]9 f/ S- @/ S ``` & l( o" \+ M2 u * **在线整理**:, Q* J6 E1 G6 D$ A$ Y4 d ```bash4 ], k, ]" v$ v1 E+ S2 ` xfs_fsr /dev/your_device & n) A Y6 \- r& l' a( z1 M) V* J # 或者直接整理挂载点 ; i; A& p" o$ F8 S; } xfs_fsr /your/mount/point$ x2 @6 G% @' c* L ```; }" M6 q _' c* U: i , l0 H: _4 i7 [0 q% p+ t ~( x 2. **Ext4 文件系统碎片整理** 4 m# X7 X+ e( Z8 A * Ext4 的整理非常麻烦且风险高,需要卸载分区。**极不推荐**在生产环境中使用。工具是 `e4defrag`。 1 e* w2 s. E; N. {9 D6 P# G+ S9 D/ k, g5 D# j- L ---9 m: l3 B+ b$ t ' ?$ `! O1 Z b3 M3 C5 j* r### 整理流程总结: r7 [1 y1 N6 j) Q# j+ c. U 1 @4 N# @' G8 x8 t1. **发现问题**:使用 `df -h` 查看哪个分区空间不足(例如 `/` 使用率 90%)。; X1 k2 J" o. ?( ^ 2. **定位问题**:使用 `du -sh /* | sort -rh` 或 `ncdu /` 定位到是哪个目录占用了大量空间(例如 `/var`)。 1 ?) d, l% {9 _# z) T" x3. **深入分析**:进入该目录(`cd /var`),继续使用 `du` 或 `ncdu` 向下分析(例如发现是 `/var/log` 很大)。 2 P) O; ~1 m; n) s4. **查找目标**:在目标目录中使用 `find` 或 `ls` 查找大文件或旧文件(例如发现一个巨大的 `application.log`)。# ? {5 G# s- L+ X/ M 5. **采取行动**: : f' j/ e$ o2 B) F * 如果是日志文件,可以清空(`> application.log`)或配置 `logrotate`。8 X0 O; U# ^& t9 J4 J0 @ { * 如果是缓存文件,可以安全删除。 0 @% Q# q- c' e6 `+ L * 如果是应用程序产生的无用数据,联系开发者确认后删除。 / T8 _9 d7 r' H6. **确认结果**:再次使用 `df -h` 确认空间是否已释放。5 P: V$ u/ K% U; w4 F2 o 7 e- |$ \6 C! e) z! U希望这份详细的整理对您有帮助!始终记住,**删除文件前务必确认其用途**,以免误删重要数据。

暂时无法加载帖子列表

回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

TW电棍专卖 发表于 2026-07-12 07:19:01 | 显示全部楼层
蹲了这么久,终于看到有价值的讨论,支持一下!
回复

使用道具 举报

0000111 发表于 2026-09-07 05:54:58 | 显示全部楼层
刚好遇到类似问题,看完这个帖子心里有底了
回复

使用道具 举报

zhizhuo 发表于 2026-09-11 14:04:13 | 显示全部楼层
分析得很透彻,很多细节都说到点子上了~
回复

使用道具 举报

静静丶de 发表于 2026-09-12 00:18:08 | 显示全部楼层
楼主太厉害了,整理得这么详细,必须支持
回复

使用道具 举报

豫永兴重工 发表于 2026-09-13 05:58:30 | 显示全部楼层
这个分享太实用了,刚好能用到,感谢楼主!
回复

使用道具 举报

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

    本版积分规则

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

    GMT+8, 2026-9-30 14:25 , Processed in 0.055056 second(s), 24 queries , Gzip On.

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

    Powered by Discuz! X3.5

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