设为首页收藏本站 国外访客:

 找回密码
 立即注册
搜索
查看: 27739|回复: 0

[未分类] Linux常用命令 - Linux 软件包卸载,无用依赖、系统日志、硬盘大文件清理(运维)

[复制链接]
灌水成绩
19101
118
19678
主题
帖子
积分

等级头衔

ID : 1

管理员

积分成就 威望 : 8
贡献 : 9
下载币 : 434
在线时间 : 1951 小时
注册时间 : 2013-9-5
最后登录 : 2026-9-16

发表于 2026-1-24 10:43:04 | 显示全部楼层 |阅读模式 IP:广东东莞
免责
再大的服务器,用久了磁盘剩余空间也会变得越来越少;何况我们大多数买的服务器本身存储空间有限,所以抽时间进行一次磁盘清理,将一些大文件删一删是很有必要的;(完全可以实现脚本自动化清理)+ C  ?* c, j. r( a8 E5 U. }
2 N& d- \- {: ?4 S. C7 Z8 P
本文章实用性说明; N1 t+ I1 e- Y. x* ^$ A6 ~9 ~) c
1.检测Linux服务器的磁盘文件大小;9 z3 z6 L! D6 ]; F8 t) R0 O) {" E
2.重点清理项目;- y6 j+ i7 u  U! Q8 o5 C

4 ^" F( j. W3 @* C+ x3 n3 \实用命令
) H+ s  K1 i0 n( }/ m8 o0.查看硬盘剩余空间
8 v( x' L, k4 x( y- H9 _% x+ g8 H* u1 Z# J
$ df -h #查看当前硬盘剩余空间并以GB单位表示
* c8 H, L% s5 V) Y- [# |文件系统        容量  已用  可用 已用% 挂载点
, F9 f+ Y. d3 o% Mudev            448M  4.0K  448M    1% /dev
8 A, d+ x% P/ U% L2 k# D, Ptmpfs            99M  1.1M   98M    2% /run0 i8 B2 \; A* F2 f6 c( k
/dev/sda         25G   13G  9.9G   57% /
7 z, Y, Z" q5 v% h, Dtmpfs           491M     0  491M    0% /dev/shm9 f' v& v1 o1 o, |
tmpfs           5.0M     0  5.0M    0% /run/lock
( I/ g+ Z. L* _8 ?2 z% htmpfs           491M     0  491M    0% /sys/fs/cgroup
, y$ I, [- H  G# n' [( B( g! k5 Vtmpfs            99M     0   99M    0% /run/user/0
8 P" ~' a2 T6 j+ ~& s5 m1.查找大文件6 Q0 B7 h( ~. D9 {
' \0 x5 u' ^* O' p* y3 x
find . -type f -size +100M #查找当前目录100M以上的文件
- ?$ `% ?9 a: t2.对查找结果按照文件大小做一个排序
9 T. G6 M* S& j& Q! |- g% C3 R) I# P# q  n8 Z# j7 m: S
find . -type f -size +10M  -print0 | xargs -0 du -h | sort -nr
# T+ W. y& l: s' _, U0 M1 O2.1查看当前目录下某个类型的文件或数量
0 H0 U* y% K4 r5 X# F) L( v. {( M: [
find . -type f -print | grep php
: M  W4 z- q( F2 j9 A: ?find . -type f -print | grep php | wc -l
" a1 F2 R2 \: @3.查找当前目录下前20的大目录! n2 n! {; S, b. r2 R) y& l
  i8 j; C. f2 }) o: z# E$ o
du -hm --max-depth=2 | sort -nr | head -20: C) I1 N+ `5 Y7 t) c( w+ x- S
*这个命令我常用,先列出20来个大占用的文件夹,一一击破;# E+ L3 i$ y" ^+ @& H
% `+ u$ X$ G: U6 b* v! e
4.计算当前目录下所有图片大小,单位为MB;
! K" M6 ]* R' u7 w! U/ \2 y" ]/ b. F3 b. P% u4 [
du -m `find ./ -type f -iname '*.jpg|*.png|*.jpeg'`|awk '{sum+=$1} END {print sum}'
6 z/ m6 x: E' v1 a+ I: W重点清理项目
* W7 M$ d/ R, tMysql 日志
# d* U/ t+ V! e手动清理日志文件4 [# Z, V. n: C. M  r2 y
mysql binlog;我的日志竟然有7Gb... /usr/local/mysql/var 一般存放位置;
$ h3 o6 `7 Y! C' R& l' U: j0 p
  m1 z1 k3 {7 H5 Q, v( p$ B1.登陆进入mysql,并使用 show binary logs; 查看日志文件。6 I" ?9 v' n2 R- W! K

3 b2 c# t  }2 w8 O2 [0 F2 nroot@localhost:/home/# mysql -u root -p
! N; @) s0 g. a! lEnter password: #输入数据库密码, y  C5 H- `8 M# C5 F. b, B
mysql> show binary logs;
3 n6 T, A$ N: {8 f  w8 y4 x2 Z, J+------------------+-----------+7 Q+ n' ^* j8 @' Y3 l' D& |! D; \
| Log_name         | File_size |$ q$ `; s/ o) q# \( j- k6 h
+------------------+-----------+- A5 o* O, K$ H" P+ J! X
| mysql-bin.001368 |   3175578 |
) H# ~6 ], j% n% Y| mysql-bin.001369 |    177599 |
6 J& d9 C  q) r: ]+ z+------------------+-----------+
( b9 u4 }5 f: }; n" C5 y2 rows in set (0.00 sec)& Y& R2 g: o) l. {; R/ |! u% I
2.查看正在使用的日志文件:show master status;
0 N! G$ E& C! u  q3 q
6 X9 n# Z% Y8 B8 S$ k9 ?mysql> show master status;' R1 ]( ]; ^+ }- l  Q( L
+------------------+----------+--------------+------------------+
- l- B; ~9 Q: O' G8 Y1 f8 X| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |! V+ [+ u* [- O6 s# u( \* T% V$ X, G
+------------------+----------+--------------+------------------+3 F1 y. Y4 I9 H+ B+ c4 p5 K# f
| mysql-bin.001369 |   348563 |              |                  |
! w' f) [  U( i' k) `+------------------+----------+--------------+------------------+
+ @; Y) R5 \* Z. M% \5 L( `2 Y  T7 ^1 row in set (0.00 sec)
" k! i$ e8 f6 Z2 C如上,当前正在使用日志文件为mysql-bin.001369;那么等下删除日志文件应该排除掉该文件;1 t2 B* h) B( [- O0 X& K% U& X

) ?0 J% ?, i5 d$ T( q% |. ~0 q4 g3.删除日志文件的命令:purge binary logs to 'mysql-bin.001369';0 ]2 T& r5 F# `5 x

2 [! I! b3 A9 t& V+ @/ Q1 umysql> purge binary logs to 'mysql-bin.001369';: U! [$ }" A  v) _+ s
Query OK, 0 rows affected (0.02 sec)
3 x6 L) h- x1 }% m; n: ~4 Ymysql> show binary logs;
8 _7 P1 G' p. g1 X+------------------+-----------+$ C( D1 V. G( H* |+ b" H
| Log_name         | File_size |' L$ ~, s# y2 T; q( S9 G
+------------------+-----------+/ W  v. t+ B& L, ]. y0 ^, d
| mysql-bin.001369 |    949552 |
- ^! ~2 O- G  E: N4 X2 C1 q+------------------+-----------++ M6 `% p4 X' d. m8 n* x
1 row in set (0.00 sec)" R# P& p7 Z) G1 F5 z
删除完毕;
( A( I& {, h9 y9 C( y+ }: ^7 |7 U, H
定时清理日志文件" O9 `8 U0 w4 V# o8 F% W( V1 B2 S8 f
1.主理人自己已经设置其不产生日志;
0 l1 |$ g5 R, R2.编辑 mysql 的配置文件,设置expire_logs_days(mysql定时删除日志文件);
+ Q1 u3 E( L; W; `" x  m( J) ^' N/ n( d) [1 j2 @" [
mysql> exit: s3 J4 }$ V" `2 \# s
Bye
# p* @7 v. h# x0 Nroot@localhost:/home/# vim /etc/my.cnf
* ?- p6 K; U$ b1 J: i2 V编辑 /etc/my.cnf 文件;找到 expire_logs_days = 10,这里设置的自动删除时间为10天;6 s5 G$ J* Q, h/ I6 q) L& [& |

3 T/ f" b6 B8 x; ilog-bin=mysql-bin
& \. G3 v1 Y% P- Xbinlog_format=mixed
: F3 u& ?# [* S6 ^8 G$ O* V) @server-id       = 17 i. [$ g2 d: b
expire_logs_days = 109 w, F& `! {* I& Z
改好,保存;重启 MySQL 即可;
5 b$ `' \# S. u$ {4 D
0 C5 B7 b" ^' O8 @# w3 }0 u; A( c4 Wroot@localhost:/home/# lnmp mysql restart7 @  U( h, e' x0 A4 w& J8 Z1 k3 a
或可编辑 mysql 的配置文件,注释掉以下两项即可不再产生日志,保存重启MySQL;
( @, O& C0 c, s8 M
0 E+ E) `( z2 r3 l& ~, D$ L$ ^##注释 log-bin=mysql-bin
/ n! l0 w; t: c; k2 y3 \##注释 binlog_format=mixed2 E, ^% P) y6 _  ^
参考1:Mysql 日志爆满,删除日志文件,定时清理日志
7 H" _  \: W9 x' x* N8 l. F( ]2 B参考2:Mysql之binlog日志说明及利用binlog日志恢复数据操作记录: w8 m0 |' a' _5 A! ^* r9 q

; r8 T2 _# E# G5 [& ?Nginx 日志
: U0 u! I" O. {  \. M9 H手动清理日志文件
. Y  X5 T( u8 A& A' U% @$ }+ L. anginx log;7 {% W: ]) j4 b+ x& o
以前博客被CC攻击/压测的时候每天产生6 7 8GB的日志/home/wwwlogs 我存放位置;% u* r( L( k" s2 ]$ N& m* |
" ?: R) C( \& c( J9 F! q* {
找到相关日志,直接使用命令 ls 查看有多少日志;4 y4 W  D) i% ^7 l6 ~( f( d' M
9 M8 w; c# G% q4 w) S1 v
root@localhost:/home/wwwlogs# ls
( C  P+ Y0 _7 wnginx_error.log6 q. k7 b! F# P' w9 B
GeoLiteCity.dat         limbopro.com.log 7 h/ R8 l( e: f) Y' i7 \
access.log              $ P* J3 y1 r) }- o
使用 > + 文件名 清理日志文件;0 r4 h( B4 E- @( g+ U- B
3 y  K9 y9 c7 p1 {6 K2 W* v
root@localhost:/home/wwwlogs# > limbopro.com.log
, T8 d1 s5 q" mroot@localhost:/home/wwwlogs# > access.log 3 w1 e) [$ }( ~' B6 S1 r& E1 ^
定时清理日志文件1 Z1 p' }6 S( m" {- y
使用 crontab 定时清理日志文件;
/ n  [) T2 x: H1 D; l8 V: a- B8 r: {4 U$ [4 S
root@localhost:/home/wwwlogs# crontab -e
; K/ E% }$ s: k* B1 e# u添加一条,设置每日凌晨零点自动清空日志:
. {% P3 U5 ^  B
2 m1 i# G/ l& f( L% R$ x* L6 C6 ]0 0 1,15 * * > /home/wwwlogs/limbopro.com.log; #每月1和15号自动清理日志! ~! o+ C6 {$ b  ~
0 0 1,15 * * > /home/wwwlogs/access.log; #每月1和15号自动清理日志
. L% N% T' z8 ]: d保存,退出,重启 Crontab;
1 X& Y+ \0 ~9 k$ L
# B3 w$ P' _- W2 B9 R6 |root@localhost:/home/wwwlogs# service cron restart
) @( o, l6 e! F! jroot@localhost:/home/wwwlogs# service cron reload
/ n9 ?* n, `; M1 ^*日志文件具体位置,以实际为准;本方法比较粗暴;
! R+ H$ k" r$ h& _+ U
4 L. V5 k/ P& [+ d% \; ?$ S% N2 j参考1:Linux crontab命令及其用法;- [: Y9 c8 ^% q/ w
) N% Z' W6 W  e: s
journalctl 日志清理
) e4 O( M7 Y  C6 G. G6 |配置文件路径: /etc/systemd/journald.conf;) n) Z$ _7 u1 q' K
日志存放文件夹:/var/log/journal;& }8 o# v4 ?5 B+ x

$ _% q* C- u2 Z- }4 T! W5 _) `systemd本身使用 systemd-journald.service 来提供日志服务. 它默认以二进制的格式将日志文件存在 /var/log/journal/ 目录中。2 \/ [) p/ W& |( }2 F

' R- X: K% W6 F, e6 K清理大于20MB的日志,大家可以将清理命令放在 crontab 自动运行:
/ c- O8 w! E8 d0 a5 X; ~" [2 f- W
+ d- r+ d8 x$ Ejournalctl --vacuum-size=20M
- U. |& v, u4 G系统日志清理
  R  C, m; ^; ~1 @7 Z系统日志位于 /var/log;日志文件会变得越来越大,我们可以用ncdu工具来查看大日志文件。
; ?0 O6 h1 w! A7 u3 d, `
3 k6 V. x. g  Zsudo apt-get install ncdu: n9 y# R! p3 ?" L, V' r0 w' s  o
sudo ncdu /var/log #然后按i键
! [7 x  s' F1 e6 t+ g, D& ]" Fncdu 1.14.1 ~ Use the arrow keys to navigate, press ? for help                                                                                                                     ; G" l/ i5 L, W& L
--- /var/log ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
, T' I% t0 L1 ]2 }" H& O) e   48.0 MiB [##########] /journal                          ┌───Item info──────────────────────────────────────────────┐                                                            + ~. u. Q7 c) e! V
   16.9 MiB [###       ]  auth.log                         │                                                          │
8 a& L4 }  M: q   15.0 MiB [###       ]  redis_6379.log   4 e$ _  e4 x2 x/ ^$ u& }
...
$ I/ m. Q0 N( ]6 u8 j( o然后进入 /var/log/1 z: r- J" I9 I7 [# |: x* l
7 f& w8 _1 H3 @6 j) K* D' s  T
cd /var/log/4 _; \4 a4 ~5 y
> redis_6379.log: n# S- R& v5 |& Q: O, e1 |( L
安装包清理
! \" u% w5 I; |% ?2 s4 ]查看安装包缓存大小
3 `, k0 v# A) r+ t7 D0 m+ D4 R
( K$ K7 a8 N* J3 ~' {du -sh /var/cache/apt/archives0 f4 h( j0 A7 y* v
使用如下命令删除已经安装过的deb包
  q6 `: D  z" @% H2 h; }! _) l, o2 r
sudo apt-get clean% h# ?& N- z+ x3 j
sudo apt-get autoclean
) @+ @6 v& g6 n删除孤儿软件包 已经没有用处的依赖3 J) s# w8 N/ D0 k
  G' o, |+ F) F: S: ?
sudo apt-get autoremove
* ]7 w  k& ^+ u3 @清除手动安装的依赖包' C1 {' R) J$ }/ d6 y- Z
) l- \; l4 C9 l& g7 |/ C4 O
deborphan! `& c( F4 p  z
sudo apt-get install deborphan
) s$ G$ F2 L- w% g6 h# w6 adeborphan | xargs sudo apt-get purge -y
8 D. Q2 a9 ?1 ]$ ]) n删除大容量已安装软件包/ T0 w/ `8 P3 I, `" L; C
首先安装debian-goodies2 [. V! L* P- I) t$ B. x
( j0 E0 `/ o1 l
sudo apt-get install debian-goodies. [# R) F; e# s& e, `5 b
然后输入下面的命令+ N2 n  ?) m$ p

) z+ T$ r! m- f1 r, |dpigs -H, c$ U) D. L1 h6 Q) e/ H
我的输出结果
8 F: ]) x  q: [' v, y* S! ?/ F- f; s* ]
531.3M linux-firmware
( `( f( Q8 ?/ a3 n6 g315.0M fonts-noto-extra
: o4 `  A/ [# Y282.0M libgl1-mesa-dri
8 h5 s, R+ f( @; }3 u) b" [$ t214.7M golang-1.13-go2 Q. z2 b* f+ X4 f( P; L! f* J
212.9M linux-image-4.11.8-041108-generic. O' }* U: m: m  @' p9 N3 r
181.1M linux-modules-extra-5.4.0-60-generic/ M( T5 p' m, R1 Y
181.1M linux-modules-extra-5.4.0-59-generic  u6 Y  H& a/ e; l" k0 P. G, [
181.1M linux-modules-extra-5.4.0-58-generic* Q/ D2 n: W' P' |& ^
166.2M docker-ce-cli8 A4 g3 @8 J# S4 P( M
123.3M containerd.io# {9 }7 N6 A2 G- y( H
上面的命令默认只会显示前10个结果,你可指定结果的个数,比如20个  w5 N$ [# D2 |5 J; w) Y0 y

0 o( {/ I3 U7 P* Q8 U& J/ b注意!linux-modules-generic 是内核,请先确认当前的内核是哪个版本,否则可能导致无法开机;见后文 旧的内核清理** 部分;
( u/ U6 \) E4 i0 R2 g# Cdpigs -H --lines=20
, G; q8 N2 K$ [5 U1 r: c6 ?- ]9 k软件包卸载命令! C3 L5 \3 F, ~" H- ]0 p3 j

1 |# V* F1 k5 {$ j' X6 oapt-get purge #purge 后面接软件包名称
/ C( {: ], M6 _' N6 O. Rapt-get --purge remove #配置文件也清理掉 命令后面接软件包名称
! H& Z! p6 l$ w+ z, f5 R示范 以 删除 golang-1.13-go 软件包举例;% {% G2 N2 J: Y; q* |

, U/ e* ]. ^. f$ w' S+ oroot@localhost:~# apt-get purge golang-1.13-go* {& e6 D& _: b4 }% y
正在读取软件包列表... 完成. `9 f8 p0 m; H" P0 z
正在分析软件包的依赖关系树      
0 z( G* y( t/ w8 G) j! J正在读取状态信息... 完成      
5 ]6 g  X& y* L4 T: A下列软件包是自动安装的并且现在不需要了:) p: z4 k9 L8 g# t$ A
  golang-1.13-race-detector-runtime golang-1.13-src golang-race-detector-runtime golang-src: |0 W6 D" O+ Q( t1 _. m# K% T' ~
使用'apt autoremove'来卸载它(它们)。
, \: f$ X0 ]6 F8 Z. k5 @下列软件包将被【卸载】:
- N" Z% a+ k$ \0 a+ F6 ^& d. {  golang* golang-1.13* golang-1.13-doc* golang-1.13-go* golang-doc* golang-go*. D$ Y) u# x. E; q5 D" K
升级了 0 个软件包,新安装了 0 个软件包,要卸载 6 个软件包,有 57 个软件包未被升级。6 g5 c  P4 o$ s# b! S3 c
解压缩后将会空出 230 MB 的空间。$ T$ m7 z/ D8 t! h+ S- a* c
您希望继续执行吗? [Y/n] Y
; r4 }8 u% X) b  s8 X4 k( c旧的内核清理6 \" J% ~4 k$ ], n* f% V4 O
查看当前使用的内核1 H/ n! D6 ?8 ^( p  d3 O+ ]3 M
9 |5 \3 ]) E) n) R  m6 ^1 q
$uname -r. L  G. g9 J. q, Q3 X
5.4.0-60-generic
4 O9 R& V9 d' J6 w- ]0 H$dpigs -H --lines=20
, y; h( X. z" m7 ~74.1M linux-headers-4.14.91-bbrplus
# |2 `5 z/ e. U70.0M linux-modules-5.4.0-60-generic //保留
$ R; l( J* W: V% ]8 S# v! r70.0M linux-modules-5.4.0-59-generic //保留/ W* |2 Y7 O; T
...
6 R5 L9 C( v: v! ^2 B看看有没有不再用到的旧内核,然后使用 apt purge 清理它们(从最旧的开始);
# a& }  G4 V+ d- @9 _" ], G! d
& `, j% ~4 Y* ]2 Q( N! d$apt purge linux-headers-4.14.91-bbrplus8 d1 F1 Y: F* i% m& _' d* A
运行以下命令 update-grub 来更新和重建 GRUB 配置(通常在内核删除时会自动执行,但手动运行可以双重保险):/ v9 F0 r9 ~% n. U' c/ U2 M

( A8 \; [. \/ q' e$update-grub5 h0 b" H6 s: `! W. W
Sourcing file `/etc/default/grub'
) ~, ]& N: r' p4 CSourcing file `/etc/default/grub.d/init-select.cfg'' f# _0 o# W; _& J( ]
正在生成 grub 配置文件 ...
; `8 o& C  V/ q: A" J! s9 ~0 n找到 Linux 镜像:/boot/vmlinuz-5.4.0-60-generic // 还在 5 p6 q, b' e6 u$ o
找到 initrd 镜像:/boot/initrd.img-5.4.0-60-generic
3 I3 J. ^% [: b  K找到 Linux 镜像:/boot/vmlinuz-5.4.0-59-generic
! f* y7 _4 z& K% s7 q" v找到 initrd 镜像:/boot/initrd.img-5.4.0-59-generic
0 E4 @, V% o3 S" N& X. y; F: }( f找到 Linux 镜像:/boot/vmlinuz-5.4.0-58-generic, @$ W' m. V! ?7 ?) ~' L
找到 initrd 镜像:/boot/initrd.img-5.4.0-58-generic
4 a: p, g9 d* S. s: J完成
' G8 K. f/ s3 T0 U/ N2 ?! a: I& b...
0 m' M, o) }9 v3 _  Y9 R
( H4 w) F& t, s6 Q, ]- m相关知识
' J) f5 R5 S# N; E& q& d( xLINUX的磁盘管理du命令详解8 a) f; O# i8 L8 v* e3 m' \4 [' t3 T

+ D" N4 T+ U: Q. E+ udu(disk usage)命令可以计算文件或目录所占的磁盘空间。没有指定任何选项时,它会测量当前工作目录与其所有子目录,分别显示各个目录所占的快数,最后才显示工作目录所占总快数。
" ?& q% F; I- Z4 g8 i4 a, T6 |: R6 X6 B+ w) V! _" g3 H
DU命令用途9 o0 R7 N& o; ^/ V8 {& @$ o
du(disk usage)命令可以计算文件或目录所占的磁盘空间。没有指定任何选项时,它会测量当前工作目录与其所有子目录,分别显示各个目录所占的快数,最后才显示工作目录所占总快数。
) M' ~# j' o" r, r% G# R
6 I4 l6 W( j! t4 g找出大文件/ a- e+ W6 u8 s$ ]
磁盘空间被耗尽的时候,免不了要清理一下,比如说/home目录太大,就可以使用下面命令看看到底是谁:
, @% N8 B& m, F& Y9 I1 C4 H9 S# |: I, p0 N7 F; J1 ]: K* q
du -s /home/* | sort -nr #/home目录检测' D$ H( M  j/ ~6 M3 n/ P

7 G( N- A* D  D+ e3 T
免责
帖子地址打造全网最多免费游戏网站,部分资源失效,私聊站长补
今日来客 列表模式
本月有问题处理时间8:00-12:00上夜班  9.7发布
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|蔡州手游 |网站地图 wapmz.com

GMT+8, 2026-9-16 19:04

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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