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

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

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

[复制链接]
灌水成绩
19646
120
20240
主题
帖子
积分

等级头衔

ID : 1

管理员

积分成就 威望 : 8 点
贡献 : 9 次
下载币 : 449 枚
在线时间 : 2003 小时
注册时间 : 2013-9-5
最后登录 : 2026-10-23

发表于 2026-1-24 10:43:04 | 显示全部楼层 |阅读模式 IP:广东东莞
免责
再大的服务器,用久了磁盘剩余空间也会变得越来越少;何况我们大多数买的服务器本身存储空间有限,所以抽时间进行一次磁盘清理,将一些大文件删一删是很有必要的;(完全可以实现脚本自动化清理)+ K  P7 X. D7 O; j' t( W! L
6 U: O4 f; Z8 Z8 o' u; g
本文章实用性说明5 D- w7 d! L9 C# v: B
1.检测Linux服务器的磁盘文件大小;
' b! r, g- R6 @3 _# g( k2.重点清理项目;
" q- K- E) n" ^: s' _: G
7 [! z' f3 D$ c8 J5 G2 C实用命令
9 A. U2 C3 O( Y$ r0.查看硬盘剩余空间
  ~  a* a9 I$ K6 y" S- T" g/ n5 Q  J2 X
$ df -h #查看当前硬盘剩余空间并以GB单位表示
0 w8 s  X" M; b8 C6 F0 }文件系统        容量  已用  可用 已用% 挂载点3 `' Z) T& Q( d7 G
udev            448M  4.0K  448M    1% /dev
) E: c- g2 J* Btmpfs            99M  1.1M   98M    2% /run- m2 @2 f( n5 @! e2 P! S* }+ m0 `
/dev/sda         25G   13G  9.9G   57% /
. J" m" `  b  g  h' N0 }) wtmpfs           491M     0  491M    0% /dev/shm  f, e2 X) h% G7 F" T
tmpfs           5.0M     0  5.0M    0% /run/lock3 a: N" Q, }; b- T
tmpfs           491M     0  491M    0% /sys/fs/cgroup% t& l5 {, J' L1 X# D
tmpfs            99M     0   99M    0% /run/user/0
" W0 g9 [; O6 o. B) o: X1.查找大文件
& l) j8 t) G/ D+ U" U8 k1 O
9 q* }0 a9 u/ ^3 U4 d: R, {find . -type f -size +100M #查找当前目录100M以上的文件8 ]2 A% m+ U5 ~1 j, H
2.对查找结果按照文件大小做一个排序
& H% v2 {) F" ~0 a& }  R6 W4 `, W
find . -type f -size +10M  -print0 | xargs -0 du -h | sort -nr$ T9 e5 w8 L/ E* m: n
2.1查看当前目录下某个类型的文件或数量' ^# g- A0 L1 D& z

6 J) M* E5 S& N3 Yfind . -type f -print | grep php
8 T6 I" g; U" C" {2 |" h, I, afind . -type f -print | grep php | wc -l
7 Y: l! G& n' `3.查找当前目录下前20的大目录
: v8 Y7 \5 s" n& E+ J2 D
6 B* x  C0 A0 B* L: }2 `/ rdu -hm --max-depth=2 | sort -nr | head -20
- Y9 J$ A/ n1 l5 L, P  v* Y7 h*这个命令我常用,先列出20来个大占用的文件夹,一一击破;
6 k( n- F& d7 z* W3 G
6 z+ P& ^+ n9 e# T: l. V1 x4.计算当前目录下所有图片大小,单位为MB;3 k! C* v% z7 p

$ @7 T0 P' I- Vdu -m `find ./ -type f -iname '*.jpg|*.png|*.jpeg'`|awk '{sum+=$1} END {print sum}') d6 {; V- ~# [' j
重点清理项目& ]$ s+ q+ i- I: ^) z, c6 t6 L
Mysql 日志8 g0 |5 k  @( l: \1 @
手动清理日志文件
& L$ }1 K' G+ K7 O: a* ~  Umysql binlog;我的日志竟然有7Gb... /usr/local/mysql/var 一般存放位置;0 p6 n7 n# d/ f) ~" c4 Y+ M

" e' |, @! `. I! L1.登陆进入mysql,并使用 show binary logs; 查看日志文件。4 C7 ]' \& H# V. [9 \* S3 @0 [
+ m: k- Z$ G# q  {$ B5 N# _$ C
root@localhost:/home/# mysql -u root -p
0 R: E( q4 v3 s  N8 G3 @Enter password: #输入数据库密码
& f% q( K& |. `3 Q, Z- Dmysql> show binary logs;
  a6 A+ h: V& R( l; B7 a5 s9 t' F4 R+------------------+-----------+
1 s4 E# x' E; {0 {/ I$ b) \5 H| Log_name         | File_size |$ F3 @# \9 X! v4 q( f4 J3 _
+------------------+-----------+
" i; W# h3 f) Z& ~| mysql-bin.001368 |   3175578 |% h; l% f0 ^6 s4 w0 Z
| mysql-bin.001369 |    177599 |' [$ q8 c& j1 @' C. m/ F- T
+------------------+-----------+
! b& P: B3 A% s2 rows in set (0.00 sec)
8 I  |: c6 O2 U( r% e5 u2.查看正在使用的日志文件:show master status;1 x: ^" {/ |: ?0 ]$ G! x, F) f  g

, {3 K- n3 x. g/ Zmysql> show master status;
, k+ g0 o0 P; @1 T  K' P) o) Z+------------------+----------+--------------+------------------+
) U, y* o+ s4 t% l3 G! x| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |2 W2 h. a  w; i) ]
+------------------+----------+--------------+------------------+( X$ t& t9 k) s0 Q: m2 H2 |
| mysql-bin.001369 |   348563 |              |                  |/ _! @* B$ ~7 [4 M! _1 p
+------------------+----------+--------------+------------------+
) H8 e/ T) r# g1 d2 M# c1 q1 row in set (0.00 sec)3 d0 V( h5 W% T. w
如上,当前正在使用日志文件为mysql-bin.001369;那么等下删除日志文件应该排除掉该文件;
" R# J/ b% D, I3 X) i# ^6 Y" y  n8 i2 D/ B% v, _% P& r* q
3.删除日志文件的命令:purge binary logs to 'mysql-bin.001369';
' U" G0 i2 f4 z
+ a7 N2 C( \6 dmysql> purge binary logs to 'mysql-bin.001369';  A7 M" F1 [' [4 V+ l7 U, g
Query OK, 0 rows affected (0.02 sec)
2 k- F6 b- x3 B' g3 z1 rmysql> show binary logs;! V% E& S) z$ r! L3 V/ ?
+------------------+-----------+5 c1 _, d' o" M* Y
| Log_name         | File_size |
% |" _  b; y& j- w5 |+------------------+-----------+' G9 @0 H" ?+ d* @
| mysql-bin.001369 |    949552 |3 w2 j$ u8 N# I2 z% u
+------------------+-----------+( E: e& [. ~$ u+ B% G" h" R" s
1 row in set (0.00 sec). t) p7 z% |/ ~, [% M8 [- `
删除完毕;8 D( S/ m8 c6 G. ~* @7 g

+ `2 d0 V8 h' u定时清理日志文件
+ J4 D2 v' k2 K7 g/ e+ S1.主理人自己已经设置其不产生日志;
/ ~2 U+ y4 W. X, Y7 B2.编辑 mysql 的配置文件,设置expire_logs_days(mysql定时删除日志文件);
* Z+ R+ s/ O  f6 D4 q+ W$ i" t
1 B% r! c# O) |; S3 t+ Z: p* Fmysql> exit
* f6 e3 m  M' b% @6 w* U. wBye
* [5 F( N( f  d) |' u0 e3 d3 mroot@localhost:/home/# vim /etc/my.cnf
, Z* I- o# [8 u# ^0 u编辑 /etc/my.cnf 文件;找到 expire_logs_days = 10,这里设置的自动删除时间为10天;: E2 e& A4 n+ L2 n" G
2 Q: r9 h8 H" _7 J4 g) `, b
log-bin=mysql-bin" |7 o9 N8 _5 k9 R: I% |
binlog_format=mixed7 W, i* k+ B9 U% F$ x
server-id       = 1
, m6 \6 @3 ^# Z6 ]& R( y/ |. Kexpire_logs_days = 10* ?/ j3 y! A+ X- r: C
改好,保存;重启 MySQL 即可;
) k1 z! k, k# m! O
5 y: c! v9 `0 K0 z. G" eroot@localhost:/home/# lnmp mysql restart
5 H; O; L8 q$ ]或可编辑 mysql 的配置文件,注释掉以下两项即可不再产生日志,保存重启MySQL;
) j; @# \  n% _( e9 D2 N) {' B* Z6 @
##注释 log-bin=mysql-bin* J" l, v+ n% n0 d. z# u# n/ a0 @& C
##注释 binlog_format=mixed% l* z% I7 H: }; g2 c1 |" L/ \
参考1:Mysql 日志爆满,删除日志文件,定时清理日志. K0 d/ v+ U) _0 A
参考2:Mysql之binlog日志说明及利用binlog日志恢复数据操作记录
$ m% Z" ~8 o! E' o+ s4 `: u
. ~' `$ R  D$ i; G3 CNginx 日志
' j$ K& D3 J% L* x手动清理日志文件, r* f) U* a" H  [9 Z; G
nginx log;) {8 s2 O% d+ b! E* p
以前博客被CC攻击/压测的时候每天产生6 7 8GB的日志/home/wwwlogs 我存放位置;
/ O3 l4 t& i5 [: E9 ?6 g
1 }# L9 o+ X8 U" H* v3 S$ S找到相关日志,直接使用命令 ls 查看有多少日志;
) E3 D: S" q' t
, K/ D: B- o( _: `* r7 L+ W' L1 Broot@localhost:/home/wwwlogs# ls: T& I" c3 H+ G$ \9 ~/ m
nginx_error.log
# K+ |' U' p9 f$ WGeoLiteCity.dat         limbopro.com.log
3 U- }% N0 O1 C. Zaccess.log              2 K8 l4 T! i5 C% T& B
使用 > + 文件名 清理日志文件;. C# A; I. J( X) P" O. q- b/ J* i
$ t# E0 P. Z* h, l+ Z/ \
root@localhost:/home/wwwlogs# > limbopro.com.log0 k5 U7 C! X  t2 u6 [" E
root@localhost:/home/wwwlogs# > access.log
# R0 a% Y; G8 a& g( I定时清理日志文件% W) i; f! Q, ]4 c5 ~6 i
使用 crontab 定时清理日志文件;
8 i$ ]8 Q8 e2 @% K
2 \1 q/ ]& g  l9 @! D. L% Droot@localhost:/home/wwwlogs# crontab -e
2 W( ~" t) |4 ]- B! b2 Q$ C* a, w1 c添加一条,设置每日凌晨零点自动清空日志:
& r1 d0 u$ Q5 ?$ S7 u* |$ ~% I6 W& }8 k2 m  ^
0 0 1,15 * * > /home/wwwlogs/limbopro.com.log; #每月1和15号自动清理日志
) D8 Q% u1 ?4 f# N' q  F: C1 O0 0 1,15 * * > /home/wwwlogs/access.log; #每月1和15号自动清理日志
' l( z8 _) ?# w- I: T* ?$ Z" ]保存,退出,重启 Crontab;- M4 N0 e+ O: {8 i

6 i1 L. A) _+ |% l1 V" x( Hroot@localhost:/home/wwwlogs# service cron restart
6 u& u- e, N3 J/ v0 j) H1 jroot@localhost:/home/wwwlogs# service cron reload
3 @; m( e% g; R$ F0 x*日志文件具体位置,以实际为准;本方法比较粗暴;
7 _1 |, f/ k% ^, u7 k- `  i+ C% J8 y3 z/ E% E
参考1:Linux crontab命令及其用法;
8 s: w0 a2 b; A# d6 h, Y: s, ^3 S/ C& b/ u# K! B: [; v3 N
journalctl 日志清理
3 e5 U+ B1 f. N% S配置文件路径: /etc/systemd/journald.conf;2 b. q% T; P; p5 x8 k
日志存放文件夹:/var/log/journal;
0 z2 @9 z+ M- ]6 c, M' G4 K
# j# q; y6 c8 C1 bsystemd本身使用 systemd-journald.service 来提供日志服务. 它默认以二进制的格式将日志文件存在 /var/log/journal/ 目录中。
3 \8 K8 W; K: U7 ]1 f" p1 k: ^8 l4 ~; C* I! X7 f( ^
清理大于20MB的日志,大家可以将清理命令放在 crontab 自动运行:% {4 R% |( Q1 r# t
# ?( w0 y( U5 m9 P  `
journalctl --vacuum-size=20M7 s$ x' d' e3 ~: z, D
系统日志清理. r5 x/ [1 l" A6 \/ e1 F" }- o
系统日志位于 /var/log;日志文件会变得越来越大,我们可以用ncdu工具来查看大日志文件。
/ F( i3 k( v' |; O) H8 Z* I$ Y! j7 X% ~: m' F1 ^/ S% i
sudo apt-get install ncdu1 @4 B4 c6 t5 b! j9 [- ?- W
sudo ncdu /var/log #然后按i键
% K, F, w3 r) d; ~ncdu 1.14.1 ~ Use the arrow keys to navigate, press ? for help                                                                                                                     
" A3 {1 a6 v* s--- /var/log ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
% T* A3 g) [/ }3 R/ _3 |* l* ]   48.0 MiB [##########] /journal                          ┌───Item info──────────────────────────────────────────────┐                                                            
# n; @; H9 z% _2 p& M7 s   16.9 MiB [###       ]  auth.log                         │                                                          │( c9 t& l$ H; I
   15.0 MiB [###       ]  redis_6379.log   ) F+ c  v; `/ E  `$ t! T
...
5 E4 P  a3 A+ M4 b9 u8 }然后进入 /var/log/" r7 F! K! A  w; _/ m% o

9 R0 g& A' b' o: \9 }- W3 p! _cd /var/log/
% @0 U  X! G3 b8 M> redis_6379.log7 A  Y4 M. t$ }* c! p) \4 U% }
安装包清理
6 B* Z5 |: {: r! j/ e/ l. Z查看安装包缓存大小5 ?0 I" U0 Y4 K  w) H& B; H

+ s. l9 ~# X3 m- j3 `8 i' wdu -sh /var/cache/apt/archives, b" s5 F: X. E2 o& N! X3 ?' E( w. f
使用如下命令删除已经安装过的deb包
' B% b4 U/ G$ ?, |- t0 `, D0 E# q; r4 e- I
sudo apt-get clean1 i# ]2 o- W' N
sudo apt-get autoclean* z$ A9 r, E( W: S6 h. M* I  L9 K
删除孤儿软件包 已经没有用处的依赖
+ C" O, Y1 A: G% L- I
+ @* e* u0 V. G8 A  Zsudo apt-get autoremove
9 M, G) c7 ^4 n5 M0 |1 _; ]清除手动安装的依赖包, g9 c$ m* A& J

1 |) w4 U# X4 @7 T1 h7 @deborphan  M- h- t5 k# q8 Y" j/ L3 ~  L
sudo apt-get install deborphan1 t7 O- e8 G  c5 B* r! M0 e" k
deborphan | xargs sudo apt-get purge -y2 l) {- ^  x8 O4 ?! O  h1 {& W
删除大容量已安装软件包7 K( U- n2 {* p" Z" H8 J/ w1 U# V, q
首先安装debian-goodies; Z8 n' h1 v- @) @; \) p8 l8 t& C3 `
$ U2 @/ P" H( B1 P# N# h
sudo apt-get install debian-goodies" X3 y% M% G1 g7 G
然后输入下面的命令
' [+ B  k! r9 }  `3 R/ c+ [! V0 {. m. U" g. Y& I* j, H
dpigs -H* @( O( w$ B2 Q, w, S  D1 E* I
我的输出结果
! a" z7 ]% s& x
! I+ z) I8 W/ c1 K8 M* D531.3M linux-firmware
% m7 t" J( W+ G7 ?: m315.0M fonts-noto-extra
4 k( Y& ]" l) T282.0M libgl1-mesa-dri1 S$ }+ @( g  d* T7 q
214.7M golang-1.13-go
: Q' q) l! F$ e0 w* z8 A212.9M linux-image-4.11.8-041108-generic
. o% f# y7 V5 N! B181.1M linux-modules-extra-5.4.0-60-generic: n. g8 g1 p, `( Z' O/ q/ q. u
181.1M linux-modules-extra-5.4.0-59-generic/ E- V4 C/ Y1 y0 M" H3 h' o
181.1M linux-modules-extra-5.4.0-58-generic
' Q( J) X, U; f) E, t166.2M docker-ce-cli" c9 l3 P* R) ~7 `7 K
123.3M containerd.io# \8 Z$ b$ m# K& i6 j. c6 A( r
上面的命令默认只会显示前10个结果,你可指定结果的个数,比如20个
( ?) q. A. X7 ^: ?5 H/ f1 V4 K9 @3 u4 @/ T4 Z
注意!linux-modules-generic 是内核,请先确认当前的内核是哪个版本,否则可能导致无法开机;见后文 旧的内核清理** 部分;
. z9 ~2 k- D9 Ddpigs -H --lines=20
0 V2 L. V. A! f; d2 z, q0 r% a软件包卸载命令
- r) N4 ~1 ?3 k7 W3 }. c& o/ S$ H& ]! z; d: k+ F- s$ h! r5 q
apt-get purge #purge 后面接软件包名称8 Y1 ~7 U& _2 J$ e; r2 @
apt-get --purge remove #配置文件也清理掉 命令后面接软件包名称! `4 |8 R, \8 T8 Z& p& V/ z
示范 以 删除 golang-1.13-go 软件包举例;% |& c4 }1 C' r8 D) N
. R" ?* i+ G( Y9 W. L' ]+ h
root@localhost:~# apt-get purge golang-1.13-go
5 b# k1 @7 \7 {" o正在读取软件包列表... 完成% X3 Y6 ^9 d0 ?( L6 Y; ~- B
正在分析软件包的依赖关系树       ! |. }' d4 ]2 d# @' F- W! S$ J) N
正在读取状态信息... 完成       4 E8 B6 Y5 W) M. C  _4 Y2 R
下列软件包是自动安装的并且现在不需要了:
- U& `- j5 E* p6 @! L  golang-1.13-race-detector-runtime golang-1.13-src golang-race-detector-runtime golang-src* M9 |- z+ M3 E
使用'apt autoremove'来卸载它(它们)。+ Y4 D6 J; ]+ P. W: \- d" Z
下列软件包将被【卸载】:
2 n9 ]% Q+ F0 ]/ v9 ^  golang* golang-1.13* golang-1.13-doc* golang-1.13-go* golang-doc* golang-go*6 k1 N8 h$ v& x4 q
升级了 0 个软件包,新安装了 0 个软件包,要卸载 6 个软件包,有 57 个软件包未被升级。
5 A% M5 i0 q% K" x* z. e' x" z! L2 h解压缩后将会空出 230 MB 的空间。2 \9 a/ b1 w+ T6 Q1 y& L( ]/ J
您希望继续执行吗? [Y/n] Y
( C5 [4 _: ^3 D' ~旧的内核清理! {6 j  i+ }4 T' n
查看当前使用的内核# ]2 p, Z) I2 s# i1 C% P  x

$ s; U+ B# M% i" G/ z$uname -r( ]8 W9 y6 B  Y% D* i* J
5.4.0-60-generic2 a* ]0 y/ `/ x/ U& B, x
$dpigs -H --lines=20
9 F2 f+ a8 F& {8 C0 O2 i74.1M linux-headers-4.14.91-bbrplus
* }7 G7 ^2 P# S* a$ Y! G1 h0 k70.0M linux-modules-5.4.0-60-generic //保留
9 F% `% m6 `  g1 b5 W7 ]) t* r70.0M linux-modules-5.4.0-59-generic //保留
/ p' i! @% z. j% `0 f: K( T...* q5 C: T+ R" `2 R; `
看看有没有不再用到的旧内核,然后使用 apt purge 清理它们(从最旧的开始);
# X! R: c$ k7 K: C0 \* r2 x
4 {+ A8 Q5 `$ D& R# ?) _6 y* V/ e$apt purge linux-headers-4.14.91-bbrplus! S7 [5 |9 d0 j3 E( E! m
运行以下命令 update-grub 来更新和重建 GRUB 配置(通常在内核删除时会自动执行,但手动运行可以双重保险):9 N" |+ b) @# K( a

1 ]% Y6 `7 {5 j  P+ s' E6 P$update-grub
! r6 L# s+ P' }* }$ C. zSourcing file `/etc/default/grub'
+ o" m" B  l3 e2 J5 SSourcing file `/etc/default/grub.d/init-select.cfg'+ O/ E' r) ?# Z8 A. b
正在生成 grub 配置文件 ..., m  g; |3 M. |& \7 J, a8 |
找到 Linux 镜像:/boot/vmlinuz-5.4.0-60-generic // 还在
. [9 ~) ]" p" k6 K5 |1 _找到 initrd 镜像:/boot/initrd.img-5.4.0-60-generic9 X& o, }) S) o: X& B4 K
找到 Linux 镜像:/boot/vmlinuz-5.4.0-59-generic" ]( Y* o, h5 D8 S9 k& b
找到 initrd 镜像:/boot/initrd.img-5.4.0-59-generic: c% {8 o8 o3 y
找到 Linux 镜像:/boot/vmlinuz-5.4.0-58-generic
1 Z) c9 N. K! n5 O( i" s( U找到 initrd 镜像:/boot/initrd.img-5.4.0-58-generic
2 C1 u. P  l! U: q! d# [1 K. ~完成
* m' |# z. L3 o! d- @" Y...$ t3 ~  }% d: W  \7 G. p2 L1 ~

0 A- X* n5 c. I: Y" J相关知识
, j" l  R& t# W( k; RLINUX的磁盘管理du命令详解+ W% `$ E9 N7 R
$ ^: y/ }4 r( a* i7 ?
du(disk usage)命令可以计算文件或目录所占的磁盘空间。没有指定任何选项时,它会测量当前工作目录与其所有子目录,分别显示各个目录所占的快数,最后才显示工作目录所占总快数。
: {" D/ I' {/ `
1 R5 H* S7 }, B7 rDU命令用途) T1 h* P% m; T1 o8 Y+ V) u
du(disk usage)命令可以计算文件或目录所占的磁盘空间。没有指定任何选项时,它会测量当前工作目录与其所有子目录,分别显示各个目录所占的快数,最后才显示工作目录所占总快数。
6 d. D  V7 h% G) b3 S0 O
1 J. f8 \8 }% G& U找出大文件
! z$ n% p1 {$ M( x磁盘空间被耗尽的时候,免不了要清理一下,比如说/home目录太大,就可以使用下面命令看看到底是谁:
" K& W6 {- E  y: V# V- @0 t6 G  k% Y. F
du -s /home/* | sort -nr #/home目录检测: T3 [9 e8 [! M
' b9 I0 }2 ?" k& H' V" C4 `
免责
帖子地址 打造全网最多免费游戏网站,部分资源失效,私聊站长补
今日访客 列表模式
10月上白班,问题处理时间等晚上
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-10-24 14:30

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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