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

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

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

[复制链接]
  • 打卡等级:暂无等级
  • 打卡总天数:275
  • 打卡月天数:13
  • 打卡总奖励:231
  • 最近打卡:2026-03-16 07:39:39
灌水成绩
16820
64
16971
主题
帖子
积分

等级头衔

ID : 1

管理员

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

发表于 2026-1-24 10:43:04 | 显示全部楼层 |阅读模式
免责
再大的服务器,用久了磁盘剩余空间也会变得越来越少;何况我们大多数买的服务器本身存储空间有限,所以抽时间进行一次磁盘清理,将一些大文件删一删是很有必要的;(完全可以实现脚本自动化清理)" g! S2 r) R7 Q7 _8 V0 Z. p. D; b

& D3 ?$ M; o& K8 G4 ?2 k本文章实用性说明
) }% C7 g. s8 N% ^1.检测Linux服务器的磁盘文件大小;7 u5 ]8 J$ g7 h$ [- X
2.重点清理项目;
( X+ j$ \+ q# v: T' i7 u  G+ O# o( z; B: d$ |1 B
实用命令. T# y, q; C( z* i  a# R' k
0.查看硬盘剩余空间
8 _& |; K6 X* A8 X- K
; `) O( w( u& p' h$ df -h #查看当前硬盘剩余空间并以GB单位表示
8 C" O; \  f+ v, p4 P" Q( Y6 n文件系统        容量  已用  可用 已用% 挂载点9 v2 ?" Y# R! }* U4 M2 c6 E5 J9 ]7 g
udev            448M  4.0K  448M    1% /dev: j& C: l/ f. S6 v+ q
tmpfs            99M  1.1M   98M    2% /run
* E2 j' x) L  G0 c0 d6 g9 V/dev/sda         25G   13G  9.9G   57% /
7 F6 H0 O& Q9 C+ y9 btmpfs           491M     0  491M    0% /dev/shm1 e: m( r# m( P( R- S4 [
tmpfs           5.0M     0  5.0M    0% /run/lock
( y, z# b2 U  O4 [. P( ?tmpfs           491M     0  491M    0% /sys/fs/cgroup& p3 y2 g6 p$ m; {
tmpfs            99M     0   99M    0% /run/user/0
; D0 T9 N* M* v1.查找大文件
5 B- ?) n; e4 v9 r! H$ s, N. [* \, X+ S
find . -type f -size +100M #查找当前目录100M以上的文件3 Y  d5 F$ s0 k) M+ H- l9 R/ r
2.对查找结果按照文件大小做一个排序
) O0 L* S1 P& ?
& I3 l/ r# n2 z9 `4 |# n. Mfind . -type f -size +10M  -print0 | xargs -0 du -h | sort -nr/ c# A- }# E3 n; h" [
2.1查看当前目录下某个类型的文件或数量
7 l& t/ X+ Y2 {; S
; f' H- V- c2 @" `' T6 u5 L/ Xfind . -type f -print | grep php. i2 p8 E+ z8 t+ U5 `6 z) D
find . -type f -print | grep php | wc -l
, ~- k3 b9 k! s$ a8 j5 r0 T" K3.查找当前目录下前20的大目录
* @" S1 Y3 W7 |: ?( n. r7 U+ R( q
/ R5 N3 U: {; S4 i' W- Xdu -hm --max-depth=2 | sort -nr | head -20" C1 j1 c0 d& p" O/ b3 A
*这个命令我常用,先列出20来个大占用的文件夹,一一击破;
+ R/ z3 F8 _7 h; D, |3 B. d; Q$ u) G- F8 C
4.计算当前目录下所有图片大小,单位为MB;
3 [# N. I( |; X; q, g& B7 S5 f( n$ _# m3 i) ]( r
du -m `find ./ -type f -iname '*.jpg|*.png|*.jpeg'`|awk '{sum+=$1} END {print sum}'' C; L% \$ \3 c
重点清理项目
9 p: J$ S& @) s+ r% Z  `% ^* G2 dMysql 日志
4 S- y- ?" V; @1 _. I手动清理日志文件+ H' }4 l( N3 D
mysql binlog;我的日志竟然有7Gb... /usr/local/mysql/var 一般存放位置;
- H& ~% Y( u% U
0 U' F9 G; \8 \" p8 ^& P! d' v: d1.登陆进入mysql,并使用 show binary logs; 查看日志文件。9 w% a% j0 L$ ]3 u! q8 w0 S% @

, P4 `( x! i' C4 Z' g" ~root@localhost:/home/# mysql -u root -p! m  E/ ]# r; @/ Q! {
Enter password: #输入数据库密码
! I- O3 e3 J- g% `mysql> show binary logs;1 w6 ~3 R2 [* Z$ M& x
+------------------+-----------+# d9 o1 g/ \# g4 N% {. e: Q2 U: C
| Log_name         | File_size |8 `2 s4 E  ~1 T' _5 d& X
+------------------+-----------+* w$ j: E% G6 m0 b6 ~' T
| mysql-bin.001368 |   3175578 |. U/ d- c$ i# I) X$ d7 r
| mysql-bin.001369 |    177599 |$ C' L8 A4 m4 N! B" k9 f
+------------------+-----------+
- u1 x) W7 Q3 U2 rows in set (0.00 sec)
# m" n. X1 c+ B) `  ~* l1 o2.查看正在使用的日志文件:show master status;8 F" Y: \; o3 }5 c% W8 A
* x7 D+ |- T8 }$ P0 g* b' L
mysql> show master status;" z' `4 ]8 J1 \0 P6 w+ G9 }4 z
+------------------+----------+--------------+------------------+/ x' r5 R3 k1 I
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
. A- b) S% s( d7 q. z0 e+------------------+----------+--------------+------------------+
& k' p. ^$ |4 g7 p7 q; l/ G| mysql-bin.001369 |   348563 |              |                  |& `3 A; q1 ~: M. Y' s: N. F+ ]
+------------------+----------+--------------+------------------+% |/ N6 W( f, d1 F0 Y( N
1 row in set (0.00 sec)$ f" O) \! L' C
如上,当前正在使用日志文件为mysql-bin.001369;那么等下删除日志文件应该排除掉该文件;
+ g" f/ x# X- P) N0 U; P/ X0 a! o; X- G+ v, ^! O! W
3.删除日志文件的命令:purge binary logs to 'mysql-bin.001369';5 T3 f2 y; u8 y) W
  H; w  n1 o; p- ?  S1 x
mysql> purge binary logs to 'mysql-bin.001369';
9 U1 }7 z; u. G; @' X5 UQuery OK, 0 rows affected (0.02 sec)
% P) W) K* B) E- h( h( M  @mysql> show binary logs;, {7 k# k/ `, H3 P. z
+------------------+-----------+
$ O) `: z+ W! ]- i$ |8 ?: H| Log_name         | File_size |% {) U% X; p- E, _
+------------------+-----------+& t0 e' w* A( a7 a. K) b4 R
| mysql-bin.001369 |    949552 |
7 c% w( e5 v5 s6 C( F7 _. r' N+------------------+-----------+/ w# \/ |% o$ |3 G# y( j
1 row in set (0.00 sec)
0 f; F0 @& P( ~. C删除完毕;
, N6 w- ^6 l: C) }" d
9 g4 j9 n# g5 D! F7 E定时清理日志文件
+ Q4 l) F/ R  w* i* z1.主理人自己已经设置其不产生日志;) H, A% l3 n) Y: d1 x1 q: ~1 z
2.编辑 mysql 的配置文件,设置expire_logs_days(mysql定时删除日志文件);0 Y& ~* W& f; L6 K* B1 e$ K
' r6 P. F" `2 e5 Z6 ?% S+ k
mysql> exit! N/ _' n+ W, O- I1 y% c
Bye
6 u' ?1 a8 f- u/ n* `root@localhost:/home/# vim /etc/my.cnf' k1 {0 m) g6 U
编辑 /etc/my.cnf 文件;找到 expire_logs_days = 10,这里设置的自动删除时间为10天;; i  O6 s4 \! v7 _, C' a

# V6 S+ I) }8 M9 llog-bin=mysql-bin
0 j- ~& H/ J# R$ N% A) [binlog_format=mixed+ U; {& ]& s: h8 I; ^6 T
server-id       = 1
, z" w- b* c$ @$ C. g+ d) x+ _$ _expire_logs_days = 107 _  |- P$ h" \7 `' e9 [5 U& ~2 M
改好,保存;重启 MySQL 即可;
) T( u& Z/ [' C' A  O0 z
: N: E; j* F' M! t* _. @3 Uroot@localhost:/home/# lnmp mysql restart
- E1 v, `% D: e& ^" Q' w/ b或可编辑 mysql 的配置文件,注释掉以下两项即可不再产生日志,保存重启MySQL;
( u4 K! W& c, h0 F, C, l$ [$ r/ p5 V; C3 t/ N! @! E: V
##注释 log-bin=mysql-bin; c" P( I: a4 p3 k# }  j4 ~  N
##注释 binlog_format=mixed6 M; A3 F, }. r$ i2 ]) T
参考1:Mysql 日志爆满,删除日志文件,定时清理日志. q8 w0 g) k% \9 u4 O: e
参考2:Mysql之binlog日志说明及利用binlog日志恢复数据操作记录
9 j! W* Z) S, d1 S4 p* t% e! `9 C7 m7 T4 a" ]
Nginx 日志" g8 c8 y- m6 T0 C: B3 J" {+ L# T
手动清理日志文件% \( B# M0 H* p) H
nginx log;
! x/ _% a/ @3 @$ c以前博客被CC攻击/压测的时候每天产生6 7 8GB的日志/home/wwwlogs 我存放位置;
& i, I  W8 j) W* O; f
' Y, D5 p$ D5 h, ?, Y找到相关日志,直接使用命令 ls 查看有多少日志;
' J' V2 y) h8 Z1 Y' J0 b- j( K0 H# O- x! z
root@localhost:/home/wwwlogs# ls" C* O, V: \/ @/ D8 H* `, t
nginx_error.log
- \7 M$ x7 I7 p. Y  R( tGeoLiteCity.dat         limbopro.com.log
) O6 ]/ |3 l! z3 Raccess.log              + h; a" A3 i+ {  P' N
使用 > + 文件名 清理日志文件;  [! P& Y" O: l' T# I6 F

7 |8 k: z8 I6 o" {/ G& q# groot@localhost:/home/wwwlogs# > limbopro.com.log
: Q$ ]# D  y  Rroot@localhost:/home/wwwlogs# > access.log $ c. Q* @7 U" z" O- ~1 K0 D
定时清理日志文件/ Y, n; M# J' _5 Y
使用 crontab 定时清理日志文件;
. w* L/ B- c7 K% Y. q3 C
% x6 T) J% t3 l8 d& eroot@localhost:/home/wwwlogs# crontab -e
4 \0 W, Z' n1 h添加一条,设置每日凌晨零点自动清空日志:" l% I: v9 i2 j4 ~* Z6 E
8 Z1 j5 s5 z  [$ w
0 0 1,15 * * > /home/wwwlogs/limbopro.com.log; #每月1和15号自动清理日志* e$ f# T' W/ ~0 V7 `/ ~
0 0 1,15 * * > /home/wwwlogs/access.log; #每月1和15号自动清理日志
! k+ |- }' I. O( S) h8 t8 }: [保存,退出,重启 Crontab;6 H" s5 d3 i$ L$ ?) _4 o
$ Y+ @) n4 l8 _* ^
root@localhost:/home/wwwlogs# service cron restart
$ R1 x* N7 U7 Y' s* K- d8 |root@localhost:/home/wwwlogs# service cron reload* q) B' J1 L! D. C3 Q1 u  ?7 I
*日志文件具体位置,以实际为准;本方法比较粗暴;
- L3 [! D2 U& E. p% q& a* Z4 z4 S4 {  Z
参考1:Linux crontab命令及其用法;
" S0 ~1 `" y- j# y. E& x% g! T1 ?# X5 @
journalctl 日志清理
7 l: _5 J0 }% J# E8 F配置文件路径: /etc/systemd/journald.conf;
+ i; F# z6 q6 V5 W8 v3 J  c, x: h日志存放文件夹:/var/log/journal;
, v  A7 ^3 ^7 b& q0 [) p, M1 d$ @0 U0 i3 |8 k0 I. B+ Z% D1 S/ e
systemd本身使用 systemd-journald.service 来提供日志服务. 它默认以二进制的格式将日志文件存在 /var/log/journal/ 目录中。
8 r, y0 g. j5 O- E' z9 {9 x' T( P1 Y+ m2 l
清理大于20MB的日志,大家可以将清理命令放在 crontab 自动运行:
7 D/ \% }) F0 b7 D- a
5 |8 `% e# l) E' W: djournalctl --vacuum-size=20M% m. k' h! F3 D' \3 W
系统日志清理! X- R- t5 B7 U
系统日志位于 /var/log;日志文件会变得越来越大,我们可以用ncdu工具来查看大日志文件。
, P6 }/ W% Z; Z3 g( F3 `$ C4 m0 V  W
8 I* L0 @$ Y( c. _sudo apt-get install ncdu3 H& Z9 D2 Z1 i- U) L, ^7 s
sudo ncdu /var/log #然后按i键
3 Z' P3 |6 I1 Dncdu 1.14.1 ~ Use the arrow keys to navigate, press ? for help                                                                                                                     ( u$ Q& N5 }, F; v! O5 X
--- /var/log ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
/ z4 y. ?4 d; {. n   48.0 MiB [##########] /journal                          ┌───Item info──────────────────────────────────────────────┐                                                            6 P' \$ V4 u; |7 Z. i2 q1 w$ u; y
   16.9 MiB [###       ]  auth.log                         │                                                          │
0 |8 ]( F5 k% m' R# F   15.0 MiB [###       ]  redis_6379.log   
8 P' X( d  Q! r) A4 R  ?...
6 E- n+ I* _' D/ K& X5 b4 ~- u然后进入 /var/log/3 e3 j1 C2 m) w# J. C: X

  X% E. Q5 r8 ^: K* u9 rcd /var/log/( w' }+ v( O" t5 B* B: R& ~% x
> redis_6379.log/ y+ s% W# U; D7 ?8 b
安装包清理
6 o. X% d/ p2 W1 i% I查看安装包缓存大小7 W1 Z5 b- ]9 n& h

+ o1 V3 b$ k! f' Hdu -sh /var/cache/apt/archives+ m- r) q9 ^, a7 p8 i+ U
使用如下命令删除已经安装过的deb包6 D& j8 z: f- [7 C: H; q+ t
" f! p1 G0 W* g& n
sudo apt-get clean
6 m0 |0 [" f+ |& d8 S% _/ E" ssudo apt-get autoclean
) X# `' b9 e) N, s( v: g删除孤儿软件包 已经没有用处的依赖! |! }9 w! H, q: F

0 l3 b+ T! n" _# Bsudo apt-get autoremove
. p* i1 z% a8 ]5 W/ N' Y1 f清除手动安装的依赖包
- j* `! H, v" M% \4 s7 a( N. w
/ Q( v1 i8 n3 h& W5 g2 O6 F2 a  bdeborphan
5 J' r# ^7 t% N) g3 Tsudo apt-get install deborphan
' f' n* O+ d9 C: z# p+ _" o% u; t5 zdeborphan | xargs sudo apt-get purge -y
; ?* m$ P6 d+ T4 h3 E8 ~5 T删除大容量已安装软件包' j# G& Z- i4 u
首先安装debian-goodies9 e  q7 g. z1 G$ P4 L/ h

# Y% U6 o4 x6 D/ f2 C: Y. R+ Wsudo apt-get install debian-goodies1 {( B7 t4 Q. \, R( I+ f- f
然后输入下面的命令
" s: ]5 I5 j' G  u* Z0 D
( i6 N! S1 _; i: T2 y% s8 V. y- cdpigs -H! M7 V% U. j/ P- V
我的输出结果
: Y3 U, V* }4 `  c5 N4 [0 W: R7 y* ^! i7 e! H
531.3M linux-firmware$ g" u6 E1 c! B3 _, a
315.0M fonts-noto-extra, e& W5 a) A3 f0 B3 D
282.0M libgl1-mesa-dri
+ A) `5 t7 p" j1 e+ _) d. p214.7M golang-1.13-go% r* J9 ]1 z1 }- `, J4 D% L
212.9M linux-image-4.11.8-041108-generic
2 n* G! d2 J7 c* }2 g5 E% T4 f181.1M linux-modules-extra-5.4.0-60-generic
: m" q! `! T% U9 N181.1M linux-modules-extra-5.4.0-59-generic
# \* Y. t) v2 n% e181.1M linux-modules-extra-5.4.0-58-generic
' E4 w# i& e/ l2 w! `2 }166.2M docker-ce-cli
5 Z, C/ W) F& C9 n123.3M containerd.io. c) j% L; x6 s( d
上面的命令默认只会显示前10个结果,你可指定结果的个数,比如20个5 U- y2 j8 e" b8 ?! d+ C+ C& j

( t( q2 s8 B4 l) i4 P注意!linux-modules-generic 是内核,请先确认当前的内核是哪个版本,否则可能导致无法开机;见后文 旧的内核清理** 部分;
+ Q- j3 S- m" X5 @; f2 Gdpigs -H --lines=20, V# y7 {. l4 h( b3 ?, `3 ^
软件包卸载命令  k4 E- z$ X/ s& v  u+ b) k
2 j. Z* ]& A: _$ U( R3 c
apt-get purge #purge 后面接软件包名称  H9 w2 g+ N: W/ H, V1 W* h* \
apt-get --purge remove #配置文件也清理掉 命令后面接软件包名称2 ~' p- j; l4 E3 n/ y- m  }" w
示范 以 删除 golang-1.13-go 软件包举例;
" ^1 t" ]% z  i9 }
1 m6 i$ i0 T0 R9 V, J! e7 g; eroot@localhost:~# apt-get purge golang-1.13-go+ I6 P$ A# P0 L* r
正在读取软件包列表... 完成
" o, ^' W# K1 i正在分析软件包的依赖关系树      
/ g& `2 g. E) }2 [# }正在读取状态信息... 完成       ) _/ f; R( J; t( C$ w( e5 y, Y
下列软件包是自动安装的并且现在不需要了:
" o1 ?8 s/ R' u1 {+ A$ w# @! F' C4 t  golang-1.13-race-detector-runtime golang-1.13-src golang-race-detector-runtime golang-src& \- V. z9 K) z! w4 M9 a( i6 j2 t
使用'apt autoremove'来卸载它(它们)。
' a% Y  M" E' N2 ^下列软件包将被【卸载】:
$ t9 Y* H/ C% ^9 {( X& d/ b5 B  golang* golang-1.13* golang-1.13-doc* golang-1.13-go* golang-doc* golang-go*+ Y* v# w. i# `! S2 z
升级了 0 个软件包,新安装了 0 个软件包,要卸载 6 个软件包,有 57 个软件包未被升级。
1 b" D1 F! S' b7 _  f解压缩后将会空出 230 MB 的空间。* B  d. P- p, m, m, |* l# X
您希望继续执行吗? [Y/n] Y
. T" l: _4 r! R8 j8 y/ _旧的内核清理" }- I: f) |: S" X  V
查看当前使用的内核0 D9 t" d" K+ {! v
" O+ l0 u! D2 V4 h3 g4 n
$uname -r" j9 `% m- \8 W9 Y& f3 x8 u$ |: e
5.4.0-60-generic
$ i  s% _, l1 ^2 o3 L- O$dpigs -H --lines=20" K6 D$ @9 S5 p& |
74.1M linux-headers-4.14.91-bbrplus
6 f9 ]! j! G. p70.0M linux-modules-5.4.0-60-generic //保留* L% M* T/ q8 ]! N6 H( v0 R
70.0M linux-modules-5.4.0-59-generic //保留
* |( q: k. N8 a6 O- {...* ?# S& G; j8 d3 w/ Z0 }$ v
看看有没有不再用到的旧内核,然后使用 apt purge 清理它们(从最旧的开始);, \2 X' V, n1 ?  c0 M
/ P% ?9 k8 P& k! Q- [; k, P
$apt purge linux-headers-4.14.91-bbrplus
1 r5 K* M" a5 ~& P( [" w5 h运行以下命令 update-grub 来更新和重建 GRUB 配置(通常在内核删除时会自动执行,但手动运行可以双重保险):
$ t  [& a2 r8 ^! y, Y1 B$ i, M7 j( P8 D
$update-grub8 D7 M9 _5 J+ _" n+ J
Sourcing file `/etc/default/grub'5 x& T" a, A% `
Sourcing file `/etc/default/grub.d/init-select.cfg'
3 D' U. W( Z: v正在生成 grub 配置文件 ...: n" G! H* |( h: A2 u0 ^
找到 Linux 镜像:/boot/vmlinuz-5.4.0-60-generic // 还在 + Q4 i1 M( s2 A  x7 e$ A5 w: j! r9 o
找到 initrd 镜像:/boot/initrd.img-5.4.0-60-generic2 {  t* {1 V, ^6 A- P
找到 Linux 镜像:/boot/vmlinuz-5.4.0-59-generic
+ @3 K) Z1 S% d# I8 p找到 initrd 镜像:/boot/initrd.img-5.4.0-59-generic' M/ W3 m/ Q' J) ]
找到 Linux 镜像:/boot/vmlinuz-5.4.0-58-generic
* g' W; L, ^4 _' O找到 initrd 镜像:/boot/initrd.img-5.4.0-58-generic, B9 \3 X9 E" L4 r7 ], \
完成
% c1 n/ `  y% V.../ d! e" n% _5 f; ]

/ v; J# G- i: X; H0 t+ v相关知识  _2 U; `, t' R8 p" [+ g5 V7 a
LINUX的磁盘管理du命令详解
. U* w6 C3 W% G
- m+ w' n' }) ]# m* z& f- m$ Jdu(disk usage)命令可以计算文件或目录所占的磁盘空间。没有指定任何选项时,它会测量当前工作目录与其所有子目录,分别显示各个目录所占的快数,最后才显示工作目录所占总快数。$ F, f' E2 A" _9 d

$ k' j$ S" `% b+ K. H% e! O/ HDU命令用途- d# U1 O. _$ D" E
du(disk usage)命令可以计算文件或目录所占的磁盘空间。没有指定任何选项时,它会测量当前工作目录与其所有子目录,分别显示各个目录所占的快数,最后才显示工作目录所占总快数。
1 K0 N! L3 B5 I
# h" o' ~0 l% R# |$ a找出大文件$ C2 P" C9 a0 k
磁盘空间被耗尽的时候,免不了要清理一下,比如说/home目录太大,就可以使用下面命令看看到底是谁:) Y5 a1 u( I) x3 @9 I  r5 h& S

4 R5 I3 b- P) ^0 [+ u, ~5 Ndu -s /home/* | sort -nr #/home目录检测
$ }; R. f- M. y
& x' W7 C. K& D5 m
免责
帖子地址打造全网最多免费游戏网站,部分资源失效,私聊站长补
今日来客 列表模式
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-16 19:17