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

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

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

[复制链接]
  • 打卡等级:暂无等级
  • 打卡总天数:261
  • 打卡月天数:4
  • 打卡总奖励:217
  • 最近打卡:2026-02-04 09:08:46
灌水成绩
15858
59
2037223
主题
帖子
积分

等级头衔

ID : 1

管理员

积分成就 威望 : 999899
贡献 : 9999
下载币 : 11509
在线时间 : 1297 小时
注册时间 : 2013-9-5
最后登录 : 2026-2-4

发表于 2026-1-24 10:43:04 | 显示全部楼层 |阅读模式
免责
[编号:16879]
再大的服务器,用久了磁盘剩余空间也会变得越来越少;何况我们大多数买的服务器本身存储空间有限,所以抽时间进行一次磁盘清理,将一些大文件删一删是很有必要的;(完全可以实现脚本自动化清理)
1 U5 l9 T  M: S4 G6 m
5 n. c9 M1 C" m* t! h, \* {本文章实用性说明
% R6 T; E8 y9 g7 d7 i) }9 e1.检测Linux服务器的磁盘文件大小;
+ w, Q4 P' e3 K5 p/ p8 h! G2.重点清理项目;
/ p4 L% n% W" ^# h. L/ B- Q% i$ L9 ]1 u! A
实用命令3 o: P1 |$ }0 w7 m/ J! M" x
0.查看硬盘剩余空间# Q& w& D( N& z6 T! a- |" E

' s; i! n) p7 j) ^$ df -h #查看当前硬盘剩余空间并以GB单位表示
; F  x% I7 [3 }8 C6 {) K/ _文件系统        容量  已用  可用 已用% 挂载点( @+ k* _0 k& X. R
udev            448M  4.0K  448M    1% /dev
. G! {1 d9 @' L0 _tmpfs            99M  1.1M   98M    2% /run% p# C* g4 W+ V% M" _" ^# `
/dev/sda         25G   13G  9.9G   57% /
7 g6 c1 \# @0 Q1 Otmpfs           491M     0  491M    0% /dev/shm
6 _; C' k. k/ Otmpfs           5.0M     0  5.0M    0% /run/lock* p: F# I. P# j
tmpfs           491M     0  491M    0% /sys/fs/cgroup5 U, g  x+ _+ M5 s! V( @
tmpfs            99M     0   99M    0% /run/user/0- P9 z2 j4 l3 {6 t
1.查找大文件
" Y5 C! `0 G0 M! e/ m* _
. c/ L) u# ]: y3 Q5 U1 [* O! Y' jfind . -type f -size +100M #查找当前目录100M以上的文件
8 @" D  j7 u9 ], y5 k( F2.对查找结果按照文件大小做一个排序6 W4 k, A4 U# n1 Y3 L# u

) p7 {& |) P8 Q4 k5 ]% hfind . -type f -size +10M  -print0 | xargs -0 du -h | sort -nr
: m& h# f3 P2 u$ F" U2.1查看当前目录下某个类型的文件或数量+ g" K+ s! ~4 V3 B

$ K: u4 f8 P/ l( N& ~0 pfind . -type f -print | grep php
; A6 k$ M: e! z5 Pfind . -type f -print | grep php | wc -l
$ o0 u8 L2 {* P# a  m& \3.查找当前目录下前20的大目录8 b, q" f* k. [8 ^9 f

$ C9 Y. ]* M2 A2 O# f2 Gdu -hm --max-depth=2 | sort -nr | head -20
+ c6 y2 \. q$ r9 a9 v*这个命令我常用,先列出20来个大占用的文件夹,一一击破;
# _9 c0 _8 @- _; K9 z- Z9 k8 C0 ^3 m& \
4.计算当前目录下所有图片大小,单位为MB;
3 f- ^2 R" O( y6 R$ h5 A; \
) Z0 m% s1 U. i. }6 U' ddu -m `find ./ -type f -iname '*.jpg|*.png|*.jpeg'`|awk '{sum+=$1} END {print sum}'
0 m5 J7 h. [' \) Y2 x; |重点清理项目
- }, I- g% V+ s2 I; DMysql 日志8 u4 W, U5 U1 n( Q; N
手动清理日志文件) {# Z  J! ]- _
mysql binlog;我的日志竟然有7Gb... /usr/local/mysql/var 一般存放位置;
3 W+ D9 _9 k5 V2 s, u! h3 L
; b/ U. R& N4 q! p" o4 e1.登陆进入mysql,并使用 show binary logs; 查看日志文件。
6 s1 W2 a) \' J' E: ?2 J& ^* H  @: z+ c9 M
root@localhost:/home/# mysql -u root -p
, f% H  h( U5 j" U# KEnter password: #输入数据库密码, A& }& {  l5 d- V0 Q1 {
mysql> show binary logs;9 y# [3 F& a0 \7 V0 H' Q: ]" V
+------------------+-----------+& a6 {. a) k* p
| Log_name         | File_size |- }8 N. S" Y0 W( a: e$ |7 h! K
+------------------+-----------+# X! M0 s$ S, t: w; t
| mysql-bin.001368 |   3175578 |
' N2 D4 H6 D9 _) n( M" g3 w| mysql-bin.001369 |    177599 |
/ W, I5 T2 d$ [- E' f+------------------+-----------+; R2 {4 q$ C; r8 m
2 rows in set (0.00 sec)
) D1 L. h+ S+ `7 P# |2.查看正在使用的日志文件:show master status;
" \8 ^6 C5 H) M- j# e" S  v2 ~  }8 h0 \9 `& Q
mysql> show master status;  }9 b! C0 U! m, f# w: a/ e$ d; K
+------------------+----------+--------------+------------------+% b; s0 |; X% L( L" L2 M) I4 F
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
  O. o' r* R- O4 c+------------------+----------+--------------+------------------+
8 i; w& p6 y; c% M7 _( |  U| mysql-bin.001369 |   348563 |              |                  |
* Q+ w3 l# `3 ^, {$ v6 j+------------------+----------+--------------+------------------++ O- C4 v) w) Y* A
1 row in set (0.00 sec)
) Q! k# F# l# g3 z如上,当前正在使用日志文件为mysql-bin.001369;那么等下删除日志文件应该排除掉该文件;7 A, F3 h4 I: X$ C* u
: ]4 w, u6 m  e1 J( _+ v
3.删除日志文件的命令:purge binary logs to 'mysql-bin.001369';
% \1 N$ B8 E, `% O6 o7 l+ _
3 n9 T2 A! a0 S( q& E, Y7 i) Smysql> purge binary logs to 'mysql-bin.001369';
- M, [- i) d2 w0 |Query OK, 0 rows affected (0.02 sec)- f% F  p- {0 h
mysql> show binary logs;; G* c/ j! Z% l8 z0 B
+------------------+-----------+
, F# R, P, \: O) p5 _9 }# Y3 u5 Q) h* m| Log_name         | File_size |
. O* ^& U0 L6 K# l8 F6 g+ l+------------------+-----------+
7 h/ H' S9 U! {3 a, X8 D| mysql-bin.001369 |    949552 |+ U" e6 U" o8 u
+------------------+-----------+8 M/ Z/ ]" C+ _+ ~) e6 ]8 W
1 row in set (0.00 sec)0 ^9 z. v% {- g0 N3 V& h
删除完毕;5 R6 U7 u! }4 N9 f* S6 d

* X$ Y8 m& O+ K4 A0 g$ l" {定时清理日志文件
) b3 Q. ~9 ~6 w  ^1.主理人自己已经设置其不产生日志;
. f: y/ w. r6 j* f2.编辑 mysql 的配置文件,设置expire_logs_days(mysql定时删除日志文件);1 J" h, \3 [2 w( v0 b: C
; i- D7 S$ t9 Z3 i- U
mysql> exit
' h8 G1 x" {6 M- sBye
2 U4 ]& g1 s* B! w" ^' s+ uroot@localhost:/home/# vim /etc/my.cnf
+ |8 d1 ]' I; l' N) z4 U- k$ ?编辑 /etc/my.cnf 文件;找到 expire_logs_days = 10,这里设置的自动删除时间为10天;  r* t1 s9 Z7 V$ E0 \2 e5 Q! Z( l
2 b% n* j& Z! d( f& N  T
log-bin=mysql-bin
) j9 `- G. Q9 |* g+ }binlog_format=mixed
  H/ Z, W8 x6 ]: X6 pserver-id       = 1" B0 b' G0 a5 \: T7 g% A
expire_logs_days = 10
( ~) O4 m% s3 y4 ]4 B- U改好,保存;重启 MySQL 即可;2 ~; O( P+ H' Z# o

  B) i) k" C0 o* {( w' {" Yroot@localhost:/home/# lnmp mysql restart0 z2 O; C0 z1 A/ ~- Y' N/ Q
或可编辑 mysql 的配置文件,注释掉以下两项即可不再产生日志,保存重启MySQL;
1 k, [8 e! U. P, ^3 H  K. v/ ^/ I
1 |' I2 V/ w! M9 J9 b##注释 log-bin=mysql-bin/ u4 [% P3 J8 c4 Q
##注释 binlog_format=mixed
9 O% ]8 H9 x9 g& Y. L1 E参考1:Mysql 日志爆满,删除日志文件,定时清理日志
! n' P! p8 l# O$ f0 E: f8 v+ ^参考2:Mysql之binlog日志说明及利用binlog日志恢复数据操作记录
6 o) L$ E7 F: r* p  [1 T" |  H% T2 r
0 I$ q2 l$ ^! d, c' BNginx 日志4 [3 {/ G, ~, k3 A
手动清理日志文件$ t) [- `# [& h- h3 X
nginx log;
- U/ p9 ?, ^# f. ?1 q1 _以前博客被CC攻击/压测的时候每天产生6 7 8GB的日志/home/wwwlogs 我存放位置;* d1 v$ I  E, }3 b* H  L5 Z

0 }! |; L$ a' B$ C% d, V找到相关日志,直接使用命令 ls 查看有多少日志;
$ W/ d( g- C" P/ [: f8 q. \
7 k3 H; Q& L- Z- _root@localhost:/home/wwwlogs# ls, z/ ?: I9 o; d, D
nginx_error.log
: {9 F; X! B! W2 X! ?- l) hGeoLiteCity.dat         limbopro.com.log : O8 f. B. T/ n8 @/ H" m( A4 R& l7 x
access.log                H! z! u2 Q8 T! E" X
使用 > + 文件名 清理日志文件;3 M* M) b. W! }
# p$ h8 O) o8 Q* P5 f3 j
root@localhost:/home/wwwlogs# > limbopro.com.log5 W7 M. F$ ^$ L" A) ~0 [3 ?7 {$ x8 U3 i
root@localhost:/home/wwwlogs# > access.log   J: {& X: O: ]$ X
定时清理日志文件
1 H! O1 Y- f7 H使用 crontab 定时清理日志文件;
# a% Q+ L4 B0 \( [& L8 f+ L6 o8 H: e
root@localhost:/home/wwwlogs# crontab -e+ N- q$ C! w# U' [# V. m
添加一条,设置每日凌晨零点自动清空日志:2 ]/ o" q# G/ S1 }
9 u2 G: Y- G* {, R* b
0 0 1,15 * * > /home/wwwlogs/limbopro.com.log; #每月1和15号自动清理日志- u& K" F7 L2 M. B! ~
0 0 1,15 * * > /home/wwwlogs/access.log; #每月1和15号自动清理日志
  ?7 S$ {2 d! U& b+ ~保存,退出,重启 Crontab;
$ R$ ~8 g9 }! w7 o9 Y0 W1 P8 Z6 }2 k
root@localhost:/home/wwwlogs# service cron restart
3 `) A4 x2 w- [  N# q. Mroot@localhost:/home/wwwlogs# service cron reload3 k& c) C% L1 r6 j8 \- Q- I
*日志文件具体位置,以实际为准;本方法比较粗暴;
( C3 @: B( u6 x
4 g5 z1 E9 r8 z2 x参考1:Linux crontab命令及其用法;  H6 L# F; u- B6 I

  e1 l* n, @& H6 u& [journalctl 日志清理7 T8 G7 p* ~4 g0 N6 e( B- [
配置文件路径: /etc/systemd/journald.conf;5 n' C6 G6 v! [' \: P4 |
日志存放文件夹:/var/log/journal;5 g! y% a& Z6 H7 J

& `; Y' Z/ F% A2 nsystemd本身使用 systemd-journald.service 来提供日志服务. 它默认以二进制的格式将日志文件存在 /var/log/journal/ 目录中。( [9 A$ \( ]5 E0 o

( U- l5 ?$ e) Q7 q清理大于20MB的日志,大家可以将清理命令放在 crontab 自动运行:
8 z5 K1 S6 I. g% Y" n, t! b% r9 w: q/ d1 N* a
journalctl --vacuum-size=20M
6 O9 f. J5 e( t系统日志清理, F% J7 `. @. k. \3 l9 V  E5 V
系统日志位于 /var/log;日志文件会变得越来越大,我们可以用ncdu工具来查看大日志文件。
' n# A% H9 U( t* m% C. ~
& P3 A# n& z0 k. k, K7 t* lsudo apt-get install ncdu, A5 y2 n: Y) R0 V0 s! j; [
sudo ncdu /var/log #然后按i键
9 c; L6 o) h( l( T) H1 p) ?ncdu 1.14.1 ~ Use the arrow keys to navigate, press ? for help                                                                                                                     : A- U5 U5 b- A! m# y! S7 [' \
--- /var/log ----------------------------------------------------------------------------------------------------------------------------------------------------------------------4 ?% ?# J" G! j$ S
   48.0 MiB [##########] /journal                          ┌───Item info──────────────────────────────────────────────┐                                                            
& ~* ?: \9 C# [7 s9 v9 I   16.9 MiB [###       ]  auth.log                         │                                                          │
" w& G+ p( u4 e7 Z5 _   15.0 MiB [###       ]  redis_6379.log   . A5 [$ }2 r5 N8 z% a" ]6 Q% p
...+ R5 i1 }2 [+ P5 n4 q
然后进入 /var/log/
0 l( o6 \8 @. i. D9 ^  a1 |/ w
cd /var/log/; ~* \' p4 x) ]2 [" K. f' V% ~
> redis_6379.log* s# ]# ~4 o) B' Q: Q: w
安装包清理
0 b% A# u9 j# p* i! y) W查看安装包缓存大小
; f& q+ a* q1 D3 k# h& g
" \; i7 f- q& M3 i: U" _2 _du -sh /var/cache/apt/archives/ H  q3 v3 t' S# Y% S9 o' ~8 R
使用如下命令删除已经安装过的deb包
) o% ]% U4 C$ s- _) y+ Z' B: k: Z2 R
sudo apt-get clean4 L6 G# H4 i/ p% t6 S2 Z
sudo apt-get autoclean- s7 F3 {% A- ~7 m2 A" y
删除孤儿软件包 已经没有用处的依赖
0 A! r% H* ^7 r, |' l  e+ s2 a8 v5 K  i5 e+ b4 |: Z
sudo apt-get autoremove
* A! `  `  X6 E- P" L清除手动安装的依赖包
3 u7 F% g/ E) b9 z1 K8 Q& ]1 }& v9 Y, s* z8 s4 P# k
deborphan
3 O7 R$ y7 B/ S3 a, asudo apt-get install deborphan
8 q4 Y2 h( K- u. F& ]deborphan | xargs sudo apt-get purge -y
6 F3 D% Q9 V- i5 \2 u: O删除大容量已安装软件包9 H7 }* @1 p& {1 i
首先安装debian-goodies! G) X1 b, W0 ^) W
! k& H+ e7 S( L; [
sudo apt-get install debian-goodies' W. G2 u' T" s% g. E' [  b- }
然后输入下面的命令
' {3 W+ u( ^; P6 W1 I+ Q! i1 r# }. \/ A3 x( C
dpigs -H% b% O$ J/ X; c# g1 C( }) }4 f
我的输出结果
& P6 {; @: o( V( d9 C' |5 p/ B# ~: Z4 A# h# b. F" D  D6 e8 J
531.3M linux-firmware
, E! o' p& q: _3 ?315.0M fonts-noto-extra1 m- W& n( P, w, c! G! B. Y8 X* ^
282.0M libgl1-mesa-dri0 S- s9 V, _9 T3 P' [, m
214.7M golang-1.13-go! ^7 w# c! v! D; l
212.9M linux-image-4.11.8-041108-generic
' l- s7 A( [7 V% r7 Z181.1M linux-modules-extra-5.4.0-60-generic; H6 t, D* c* j# S+ a
181.1M linux-modules-extra-5.4.0-59-generic/ y3 [- b6 v% M6 R, }
181.1M linux-modules-extra-5.4.0-58-generic
! N3 \4 m# N: h9 R! p166.2M docker-ce-cli4 |# W/ d3 R% B
123.3M containerd.io
! g+ ^+ X# E5 R5 B5 c上面的命令默认只会显示前10个结果,你可指定结果的个数,比如20个* U- R* i* U! @
+ Y+ A0 F  P( f
注意!linux-modules-generic 是内核,请先确认当前的内核是哪个版本,否则可能导致无法开机;见后文 旧的内核清理** 部分;
' ~6 `9 {) C6 ydpigs -H --lines=20$ `& }# V8 k5 D! ^0 i! @- u6 d9 O
软件包卸载命令
/ i/ d! I# F. w# V& C6 f  ]/ @9 S1 N; y# ?: K
apt-get purge #purge 后面接软件包名称% X7 U8 @) k+ N$ P# Z/ Q
apt-get --purge remove #配置文件也清理掉 命令后面接软件包名称
6 K; f' h/ j# e$ ?( `5 M& `- l示范 以 删除 golang-1.13-go 软件包举例;7 I; n) b7 O1 M* ?
+ k, L; U# E0 E  M" h2 j9 T
root@localhost:~# apt-get purge golang-1.13-go) N# C6 t, U- x6 J# D$ N
正在读取软件包列表... 完成1 E5 K8 @% n5 a% a) _! |( W
正在分析软件包的依赖关系树      
3 s6 {' F+ W, h8 q; W- G正在读取状态信息... 完成       ' j( P5 g0 l* @* s' v. x
下列软件包是自动安装的并且现在不需要了:- m5 y! M4 x0 f" L) C/ _
  golang-1.13-race-detector-runtime golang-1.13-src golang-race-detector-runtime golang-src
. o/ G  A7 d, q& R5 j- [1 K: z使用'apt autoremove'来卸载它(它们)。
, s8 F0 Q0 r- T# q* ^下列软件包将被【卸载】:! N% D5 p1 ?, i
  golang* golang-1.13* golang-1.13-doc* golang-1.13-go* golang-doc* golang-go*
2 s' H: s7 x. m- {# v" X9 g8 p升级了 0 个软件包,新安装了 0 个软件包,要卸载 6 个软件包,有 57 个软件包未被升级。
7 U( O4 k# G7 r: g7 Y$ t8 r2 X解压缩后将会空出 230 MB 的空间。* V6 F0 ~* o. E- B1 P+ b; n
您希望继续执行吗? [Y/n] Y
% N; O, W  C6 P! }$ N旧的内核清理
0 p+ d: V0 B$ [( l查看当前使用的内核
% ]+ Z1 J* ]( n) n( n& b6 l* I
% h6 ]7 G! L2 u$ I  {$uname -r
- s/ s! O) J$ \% \' |. D5.4.0-60-generic' S0 _; E+ c4 d- M+ I6 U
$dpigs -H --lines=20
  d& k  ]' Q5 z  f% b& }& e74.1M linux-headers-4.14.91-bbrplus( e' t2 }+ ]; S- ?- u. ^  R2 q
70.0M linux-modules-5.4.0-60-generic //保留
& P; T( S; ~! M5 V" p70.0M linux-modules-5.4.0-59-generic //保留6 Z: Q3 N4 `- x. L2 z
...
$ R) w% u8 ~% x( Z+ Y# p看看有没有不再用到的旧内核,然后使用 apt purge 清理它们(从最旧的开始);
* q' G; n  m) e" N; j1 Z& t8 [
2 w( e; ]1 B& u3 x4 w  N- d$ o! D$apt purge linux-headers-4.14.91-bbrplus7 Z: t  Z# K9 f% L  [9 a
运行以下命令 update-grub 来更新和重建 GRUB 配置(通常在内核删除时会自动执行,但手动运行可以双重保险):
8 n) _) j2 d% i( z$ P) ?5 O
. w: ?! P) s1 H6 U$update-grub
' @6 `) n7 S$ E( n' {% y" o/ fSourcing file `/etc/default/grub'
7 z9 e! _+ k1 g1 O5 b1 g* FSourcing file `/etc/default/grub.d/init-select.cfg') S3 P% i# `& H% y& t
正在生成 grub 配置文件 ...( `: _8 F  E) W3 }) A" l
找到 Linux 镜像:/boot/vmlinuz-5.4.0-60-generic // 还在
" ^# n" ~! l; S# l找到 initrd 镜像:/boot/initrd.img-5.4.0-60-generic
: Z4 ~/ @* a# D0 i4 c. p1 m6 S找到 Linux 镜像:/boot/vmlinuz-5.4.0-59-generic
8 F" R! D! f) N) _6 m$ e2 v找到 initrd 镜像:/boot/initrd.img-5.4.0-59-generic, h; d: p' F0 g, M4 V
找到 Linux 镜像:/boot/vmlinuz-5.4.0-58-generic
+ W6 }8 @: e9 [* p3 m找到 initrd 镜像:/boot/initrd.img-5.4.0-58-generic, Y' J7 Y6 B; U4 V0 g
完成
5 ~8 a  W' C; j9 Y  ^/ U9 }...
; H. O8 d) M/ m. V8 q! J
/ K" }+ Y: E" G7 F" e相关知识0 J# x2 [- d2 j( O* L1 s. {5 l
LINUX的磁盘管理du命令详解
# f8 o+ y& x* R2 W0 ~$ ?
; J. M+ E) n* ~du(disk usage)命令可以计算文件或目录所占的磁盘空间。没有指定任何选项时,它会测量当前工作目录与其所有子目录,分别显示各个目录所占的快数,最后才显示工作目录所占总快数。0 e6 G2 Z' x: c
# R$ ]) h7 e$ I* Y6 j% K
DU命令用途
- E8 u: n! }5 V  C' a1 b  M2 Mdu(disk usage)命令可以计算文件或目录所占的磁盘空间。没有指定任何选项时,它会测量当前工作目录与其所有子目录,分别显示各个目录所占的快数,最后才显示工作目录所占总快数。
9 r8 a, P' {- @' R; D
1 v: q* y  z1 G, z) I) C/ j找出大文件) S: ]2 i3 [0 S
磁盘空间被耗尽的时候,免不了要清理一下,比如说/home目录太大,就可以使用下面命令看看到底是谁:; t9 q" e4 l/ O/ C& S, s9 h
8 {8 P: O2 u" T0 ], t/ E% ~. V
du -s /home/* | sort -nr #/home目录检测
; o1 P1 ]& q3 B, @/ f* r- o8 A: G$ J6 E! y' _# J
免责
帖子地址打造全网最多免费游戏网站,部分资源失效,私聊站长补
今日来客 列表模式
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-4 09:36