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

[其他] centos 整理磁盘命令

[复制链接]
我来看看 发表于 2023-04-24 04:42:47 | 显示全部楼层 |阅读模式
好的,在 CentOS 中整理磁盘(通常指清理空间、分析使用情况、查找大文件等)有一系列常用命令。下面我将它们分门别类地为您整理出来。6 w0 j3 u) a6 R: b8 m) u 1 o% N. o+ O$ N, N/ }. r### 核心摘要 / v9 d& V& J. x ! [' v5 N/ ^; i+ j. m对于“整理磁盘”,通常包含两个层面:. l ]) H$ H3 V5 j& O 1. **空间整理**:清理垃圾文件、删除大文件、释放磁盘空间。这主要通过一系列查找和分析命令完成。: P/ s, |8 N/ L$ ^: B: j$ a- d 2. **碎片整理**:对磁盘上的文件进行碎片整理以提高读写性能。**请注意:CentOS 默认使用的文件系统(如 ext4, XFS)通常不需要手动进行碎片整理**,它们的设计已经很好地处理了碎片问题。尤其是 XFS 文件系统,它支持在线碎片整理(如下述命令),而 ext4 的碎片整理则比较少见且需要卸载分区,风险较高。9 ?; i0 J) l* B+ a : J: V+ }) }2 v& G7 @ --- * J! u" M. X7 Y+ v( S1 `4 z* k7 `% W: ~ ### 一、磁盘空间分析命令(最常用) 8 J2 M3 M1 C& g: }# L5 g, C2 V5 X) b$ n& C 这类命令用于快速了解磁盘空间被谁占用了。 1 e5 I9 g( F& g7 F+ H/ S0 J% B: ?* t1 _* v V; |" g 1. **`df` - 查看磁盘挂载点空间使用情况** 8 h0 S9 u% P j1 M' G5 V * **功能**:查看文件系统的整体磁盘空间使用情况。 0 L- K/ W9 u, s8 p9 L' i * **常用选项**:- z6 h9 l/ y: Y7 C6 _ * `-h` (human-readable):以易读的格式显示(如 G, M)。 1 N" c5 p) U- O; _1 v! g * `-T`:显示文件系统类型(如 ext4, xfs)。 " ]/ @# S9 d! b% F3 K * **示例**:& _1 Z2 k, j# H9 W ```bash) x5 K, c- D' m3 ~& p- e df -hT' E1 `' w( J+ o) F1 }9 e5 s5 d, {/ [ ``` 8 W0 `' e7 I1 H# f, F: y% X* k * **输出解读**:重点关注 `Use%` 列,找到使用率较高的挂载点(如 `/`, `/home`)。 7 r6 W4 k8 }0 b+ r! Y; Q j3 T* H * a* d8 d8 y7 o3 c/ D2. **`du` - 查看目录或文件的磁盘使用情况** ( X+ _ |3 j7 V S * **功能**:估算文件或目录的空间占用。& w9 O0 r* E5 K. P# L. C * **常用选项**:5 b# c* j+ S) |+ h' u$ h" I/ V) s0 J * `-h`:易读格式显示。& {, q4 A1 U+ U' M * `-s`:仅显示总计,不显示子目录详情。 " e. U+ a6 a2 i$ f * `--max-depth=N`:显示指定深度(N)的目录统计。 " N& V5 u6 ^" ^5 r! I * **示例**:/ N3 g6 Z" n; G" G% G/ C0 L; n ```bash9 } b7 Y/ |0 N7 j# R # 查看当前目录下所有一级子目录的大小 0 l3 w: i Q/ p$ S du -h --max-depth=1 & r: n1 B) g! x% m1 G5 F7 k5 D& m ) G, I& P$ H# g Y # 查看 /var 目录的总大小 , v C9 @4 H8 m! a: U du -sh /var0 D; e9 T* @/ m7 S6 }9 Q% G1 m0 Q ( k2 N; q3 u$ l: }; t4 \& Y' j- ~ # 查找 /home 目录下最大的10个目录/文件& B9 |; r, n0 l6 ~8 ^! ] du -h /home | sort -rh | head -n 10 9 Q C$ T( p% N/ [: `8 R ```& E- w W. u. t3 u; Q / W: v" U+ \2 q/ G6 @3. **`ncdu` - 交互式磁盘使用分析工具(强烈推荐)** 1 ~3 |1 B( ^( j" y' i; Y * **功能**:一个非常强大的、基于 ncurses 库的交互式磁盘分析工具。比 `du` 更直观,可以快速导航和删除文件。( A% v9 I9 V1 K+ {" w: g * **安装**: ; b2 a* o4 a7 }4 _$ U! O ```bash2 |/ f# C+ _1 Y8 h, Y; l yum install ncdu$ \- U+ p+ O3 U, y+ s ```! t* m; @0 }! T * **使用**: ) c6 H+ E) ?2 _1 Q ```bash + a) S# e8 o0 K I # 分析当前目录 3 B$ M% z3 y' l, E- G ncdu0 y: i9 R- F+ |# P& i% V # 分析指定目录(如根目录) : Z! a' L) H- R ncdu / 9 G) Y' \$ T6 u8 k ``` . }* k4 R V3 V1 C- H$ f * **操作**:使用键盘 `↑` `↓` 导航,按 `d` 删除选中的文件/目录,按 `?` 查看帮助。- y7 w4 R0 L3 h7 } ( w% }. t } H1 _* N. P7 k---$ z5 x, u7 Q9 f. W( b $ J: S0 |0 t/ l& o0 v1 C- b9 y4 W# U ### 二、查找大文件命令 7 Q( y+ n/ }. n! B2 o, k' i* w2 A 当你发现某个分区空间不足时,通常需要查找并清理大文件。 ' g- `; H$ V; p% @/ e - g8 e( o% Y( j5 {* i7 I1. **`find` - 强大的查找命令** 0 l0 N; g0 k& @( S4 t * **示例**: 6 C ]' o/ R8 @* x8 Y& K. C ```bash' N2 N; |. h+ W" ^ F, t # 在根目录 (/) 下查找大于 100M 的文件1 H. _7 {- z/ Y8 C4 B find / -type f -size +100M* _/ n( H6 l- R$ U; L4 I, U 7 C7 y6 n# S9 t7 v; }! [2 S # 在 /var 目录下查找大于 50M 的文件并显示其大小9 ` f. @7 k. S- r' Q3 L find /var -type f -size +50M -exec du -h {} \; : t- I, o9 O: o* O + c. v( J. a# ?0 h4 s* C # 查找并删除 7 天前的 .log 文件(⚠️删除操作务必谨慎!)& i7 S" j( s+ J; p+ F find /var/log -name "*.log" -mtime +7 -exec rm -f {} \;; H1 f. @ T, B) h2 t6 d ``` 2 r8 F( I9 r2 h- h9 X3 o 5 q7 {8 W3 ], E4 `% {2. **`ls` - 列出文件并按大小排序** $ g: i+ G) G* a; |/ o * **示例**:2 y8 k( E# `' e$ F; S ```bash& E7 E3 e6 y/ u+ ^2 U" ^7 a1 T # 列出当前目录下的文件,并按文件大小逆序排序, c1 ^! ~6 x4 y! l( E5 L0 X- ~ ls -lhS1 l1 C3 m8 I4 d$ Z # 注意:ls 命令本身不递归子目录2 p3 |$ ?( h. G% ] k+ B+ f- O) f ``` 5 V& A4 B! Y# b2 A' w / x6 u! p+ e; h4 t k9 R5 @---; w" L2 m T- o9 W: M! U" _0 Z9 i ) F8 i' x: L+ A ### 三、清理特定垃圾文件' a9 J; S# N3 ? : L' A: [8 b! u# ]4 G' e系统运行会产生一些可清理的缓存或日志文件。6 y- m$ }/ E5 r& h8 t, q+ u: z8 n* m & \$ G2 t$ }7 m# K+ l% z5 P1. **清理 YUM/DNF 缓存**7 h; _/ J) [+ C* L. M% } ```bash, D3 r5 D# z, `2 r* e! g, k yum clean all # 对于 CentOS 7 及以下4 O/ W+ A7 C5 u- g( L# J- | dnf clean all # 对于 CentOS 8 及以上 0 p8 B6 I! Y+ l7 }% r# T ```" Q; d3 V# E- D' b' @! ^) C 6 `% v% w# @4 p4 G) A' M2. **清理日志文件 (logrotate)**# o, X& H- U' Z7 c! v/ {4 \( e4 ] * 系统通常使用 `logrotate` 工具自动轮转和清理日志。你也可以手动清理: 9 f+ c1 M! o. l2 q' s* [% d$ u ```bash 2 f" |* G' Y, ]/ |4 f# y( ^. y # 查看 /var/log 目录下较大的日志文件,并选择性清理+ ~! i6 B- J7 b6 k2 n; O: A find /var/log -name "*.log" -size +100M $ w! |0 U; S7 `8 n # ⚠️ 注意:不建议直接 rm 删除正在被进程写入的日志文件。, n0 P7 u& ^! ?) H& H. y # 更好的方式是清空内容(例如对于 messages-old 文件): ; Z* s# e- t) g( N > /var/log/messages-old+ b2 {" b% m4 D7 P# v ```$ |9 @* O. K% R. Y4 f a6 d7 H2 p 9 O/ G! I6 J7 x- e7 T* y& v7 E3. **清理系统内存缓存(危险系数低)** 3 R: s0 ]( @# r' N: J; T * 这个操作**不会丢失数据**,它释放的是内核用于缓存磁盘数据的内存,必要时内核会自动重新分配。在系统内存紧张时,释放缓存可以让应用程序有更多内存可用。 / J5 S |) B4 d$ I& h3 ?. Z ```bash G1 l1 g, m h5 w- M # 释放 pagecache, dentries 和 inodes2 }# }, I) `- {- H" U3 k, S4 q! j sync && echo 3 > /proc/sys/vm/drop_caches $ \7 J2 g7 L6 a7 B7 Q ```; Y3 @ H3 c( y * **注意**:这只是一个临时操作,主要用于测试或应急,不是常规的“磁盘整理”任务。* B+ a2 s; A4 Y/ A- t ! z8 b# A9 R1 ^4 L0 g1 T--- 0 b" K5 @# Q7 b" M1 y2 G$ `) J! }. F ]6 q ### 四、文件系统碎片整理命令(特殊情况使用)4 F6 l% ?2 q, |/ V* d; r & Q2 U# i4 a2 Y8 H **再次强调:Ext4/XFS 在日常使用中碎片化率很低,通常不需要手动整理。** 0 E% V) m. r) P: l) r: F2 s ' s D6 G4 n8 o0 p* I! m+ {1 k1. **XFS 文件系统碎片整理**9 i l2 f' \- z# Z4 [ * **检查碎片程度**:3 B# X3 A6 g+ N- u# e9 W( R+ ?, ? ```bash * J; v+ E& m8 H+ |! e2 X9 J0 ~0 A xfs_db -c frag -r /dev/your_device * I' f' G% R+ a; J$ f ``` ! D3 j. l. K2 n! |+ |2 ~! Z. J * **在线整理**: $ f) V! Y/ ~- r- S, u8 y+ \ ```bash 7 Y7 ~! a1 G- h$ x xfs_fsr /dev/your_device2 m/ n9 _( O1 \% b5 m# o3 e } # 或者直接整理挂载点 6 t7 T# f4 b, V xfs_fsr /your/mount/point: \! f z: B2 |7 X ```8 a0 J" c# e% d# t8 ] / ?) j9 P# G/ ?# b) e% O2. **Ext4 文件系统碎片整理**+ r/ l, K: U* I y& s. Z- f' J- Z * Ext4 的整理非常麻烦且风险高,需要卸载分区。**极不推荐**在生产环境中使用。工具是 `e4defrag`。$ t* d6 A8 Z8 K/ A: S * |: s6 e( f% ]; Y4 \ w ---8 O8 `4 x$ |6 @3 e8 e8 t : V% P7 N Q2 R' r8 W) D, \### 整理流程总结) [* D# f0 L' m+ L 8 O Q: ]4 P: R, r5 x* B 1. **发现问题**:使用 `df -h` 查看哪个分区空间不足(例如 `/` 使用率 90%)。 / S& m! B% C) D! |9 G2. **定位问题**:使用 `du -sh /* | sort -rh` 或 `ncdu /` 定位到是哪个目录占用了大量空间(例如 `/var`)。 0 i. o1 I+ J5 c* W! _! d# G+ M3. **深入分析**:进入该目录(`cd /var`),继续使用 `du` 或 `ncdu` 向下分析(例如发现是 `/var/log` 很大)。 % h2 k1 l5 E' k: H" i* h) @4. **查找目标**:在目标目录中使用 `find` 或 `ls` 查找大文件或旧文件(例如发现一个巨大的 `application.log`)。 7 U. y5 a p. w6 x5. **采取行动**: - n& K4 [3 ~3 x& g$ N * 如果是日志文件,可以清空(`> application.log`)或配置 `logrotate`。6 _( D7 Y+ G% ^ * 如果是缓存文件,可以安全删除。8 A& \, @( |* F4 f; \ * 如果是应用程序产生的无用数据,联系开发者确认后删除。 0 t' |" a8 l: ^( f, e, U2 ]7 B3 F6. **确认结果**:再次使用 `df -h` 确认空间是否已释放。 - e+ q$ K' J Z/ ~. y4 f8 o( R5 ]' v 希望这份详细的整理对您有帮助!始终记住,**删除文件前务必确认其用途**,以免误删重要数据。
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

    本版积分规则

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

    GMT+8, 2026-3-25 08:59 , Processed in 0.058552 second(s), 23 queries , Gzip On.

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

    Powered by Discuz! X3.5

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