|
再大的服务器,用久了磁盘剩余空间也会变得越来越少;何况我们大多数买的服务器本身存储空间有限,所以抽时间进行一次磁盘清理,将一些大文件删一删是很有必要的;(完全可以实现脚本自动化清理)
6 v- y4 N- W. L, b3 i% i4 x0 r; u( U* _' m: Y" N
本文章实用性说明1 V% ^1 M( e9 j$ {5 k) S" q1 o! e
1.检测Linux服务器的磁盘文件大小;! R/ M5 y/ s5 Q8 |
2.重点清理项目;
p* M, t Z4 b7 q; N$ s" I
$ B& `& n" g8 O/ J实用命令
; F$ E" w0 |' x' e0.查看硬盘剩余空间: M6 Z% ]$ X1 c X5 l" w5 m4 _: _( V0 w
# B2 d, t! D, b& T% ~
$ df -h #查看当前硬盘剩余空间并以GB单位表示
8 s' J+ Q3 O+ A: f文件系统 容量 已用 可用 已用% 挂载点- V6 v! R/ x1 I, x/ S. B
udev 448M 4.0K 448M 1% /dev
. j D9 O8 G; _5 z. v2 d! |tmpfs 99M 1.1M 98M 2% /run
" y+ Q$ ~* [7 X: s. \/dev/sda 25G 13G 9.9G 57% /6 F" x0 J0 Q& U- A( | I: {
tmpfs 491M 0 491M 0% /dev/shm8 h7 k; s4 B) @# A4 w1 I
tmpfs 5.0M 0 5.0M 0% /run/lock
6 B# L& p6 ?- Q! o7 wtmpfs 491M 0 491M 0% /sys/fs/cgroup- \; \: N* k# s) W! l! L) v& a
tmpfs 99M 0 99M 0% /run/user/03 B v5 o: U& [; O7 j* `- A* g
1.查找大文件
$ [8 K' ^2 k) S' N' Q* F" c, ^0 o7 }# z; Q& P. {. m: N
find . -type f -size +100M #查找当前目录100M以上的文件2 W% n9 J0 i4 Z" ^/ ~" w8 b
2.对查找结果按照文件大小做一个排序
6 z* Q% k. ] t7 D5 m' i9 l# r# N4 b0 L+ T8 T/ B
find . -type f -size +10M -print0 | xargs -0 du -h | sort -nr
. _' e* I, q/ |1 M/ g, H, ]& O2.1查看当前目录下某个类型的文件或数量
, ~1 M8 N5 p5 d' t9 j" l( M$ D0 }$ n
find . -type f -print | grep php
8 G [$ i8 T) {# X; D- O% Hfind . -type f -print | grep php | wc -l/ s* E S8 Y% S6 o
3.查找当前目录下前20的大目录
% {) Y( j( k! g3 Y, I+ l: [2 r$ L ?- l
du -hm --max-depth=2 | sort -nr | head -202 u- `3 n: T3 K4 I9 l7 Q
*这个命令我常用,先列出20来个大占用的文件夹,一一击破;0 E# Z0 K4 ?# T
) k5 G0 E: s- W: P- K' H" O4.计算当前目录下所有图片大小,单位为MB;/ ~, c1 y7 [6 A6 F0 ] d" H
$ _7 C: {/ y fdu -m `find ./ -type f -iname '*.jpg|*.png|*.jpeg'`|awk '{sum+=$1} END {print sum}'0 u5 I, n# q, y; F, q% F: ~6 S7 T
重点清理项目) O' _2 G5 }9 H9 _/ ~5 j
Mysql 日志+ ^* `' e E4 e0 [# T
手动清理日志文件
2 _; [, M" J+ e. a( jmysql binlog;我的日志竟然有7Gb... /usr/local/mysql/var 一般存放位置;; _, M! p8 K- p/ B
! F9 c& d( A2 z' W( ~: C4 O# [. t
1.登陆进入mysql,并使用 show binary logs; 查看日志文件。$ x. n h; S+ `
5 s0 @9 R$ u) Kroot@localhost:/home/# mysql -u root -p
; o) ^) b0 `0 b' M7 vEnter password: #输入数据库密码' M8 Y, E* z# ~4 I/ I* O2 g, p; b
mysql> show binary logs;# ^9 S2 G2 p: v+ ^2 t5 d: T
+------------------+-----------+
+ _ c0 R2 x: l8 |: b2 [( D K| Log_name | File_size |& ?$ Y# X+ [& M3 R: H/ t
+------------------+-----------+, y2 O/ U0 Z5 `$ Q
| mysql-bin.001368 | 3175578 |
7 T. r% \ t" t) {9 P| mysql-bin.001369 | 177599 |4 z# u( m3 w7 h9 g5 u8 g
+------------------+-----------+" h; f6 `4 w) Q o2 B) y5 P# C
2 rows in set (0.00 sec)" ~. u. i9 K) o) @8 s2 S
2.查看正在使用的日志文件:show master status;
2 y; A' c, z0 S4 y7 C
, \4 w8 A6 d$ P6 u, [mysql> show master status;
3 n$ a- A2 D% _% p& H+------------------+----------+--------------+------------------+$ `. h7 X: r* @: O2 _ p) V" P
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
5 _( X% I) K' B! j+------------------+----------+--------------+------------------+9 }; X E; n* w
| mysql-bin.001369 | 348563 | | |) X- l' X0 l i' B
+------------------+----------+--------------+------------------+; ^+ x" V7 M2 V+ u7 G
1 row in set (0.00 sec)
# Q( `" B7 J0 Z0 L9 B) [8 O# z- T如上,当前正在使用日志文件为mysql-bin.001369;那么等下删除日志文件应该排除掉该文件;
; T a' W7 s2 Q* K* e* @/ T4 m2 v u4 \$ K3 D
3.删除日志文件的命令:purge binary logs to 'mysql-bin.001369';" B' a7 B; r4 ?; o2 j" c
& n) G& a( v/ U/ nmysql> purge binary logs to 'mysql-bin.001369';
' b+ ]: Y& {# }3 F) T0 rQuery OK, 0 rows affected (0.02 sec)# o! s ^2 u2 K# [5 z
mysql> show binary logs;
+ V5 s5 ~" {4 H) K+ y+------------------+-----------+
5 }* @/ N3 ?# t X: L/ \) \8 t| Log_name | File_size |
/ A \# f1 J% x# u; R$ R+------------------+-----------+; u/ Y( X' s6 d, B8 R; r! g
| mysql-bin.001369 | 949552 |; K! d0 x7 ]- K% k
+------------------+-----------+
# L/ a. c7 N% z m* R1 row in set (0.00 sec)
9 e: D1 {5 q+ ~/ K9 |3 N! j, M/ X, g删除完毕;
?3 I* _/ v/ C' i6 [: d9 u8 H
w; R) J+ U1 Z' |. h7 r定时清理日志文件$ d+ f" _- k8 F* E6 \+ [2 L
1.主理人自己已经设置其不产生日志;0 P0 ~( ~ S+ K/ H* k8 ~7 _
2.编辑 mysql 的配置文件,设置expire_logs_days(mysql定时删除日志文件);3 W; [0 X b7 H$ }; L
# D* W: j! Z* s/ X( umysql> exit# g$ T! B* A5 p' Y- F
Bye, m- A- ^* k2 d2 X
root@localhost:/home/# vim /etc/my.cnf
5 [; M7 M/ L8 \1 z' H y+ d, K4 S% {编辑 /etc/my.cnf 文件;找到 expire_logs_days = 10,这里设置的自动删除时间为10天;
* X3 a( Z- P$ [0 Z: i5 k5 `. A d! o) p. S' @) I: k
log-bin=mysql-bin
8 `: }9 {6 |" W4 N& r t1 xbinlog_format=mixed) r' T+ O# j8 _. R _. |
server-id = 1+ A% s! H( X1 n# e+ r% j* U/ G
expire_logs_days = 10
9 K' \3 f6 F+ Z3 E$ P5 B改好,保存;重启 MySQL 即可;
$ k* Z1 m# Q K5 m7 r3 n0 f) W, _
3 d- R1 H# G3 x1 D7 F, ~root@localhost:/home/# lnmp mysql restart5 ~0 U; ^# I% {% J* d4 Z7 [1 A6 ?
或可编辑 mysql 的配置文件,注释掉以下两项即可不再产生日志,保存重启MySQL;
% s! L b v% K3 X
' _; o# ~: e4 W; I: g! h5 V3 ~##注释 log-bin=mysql-bin8 }9 b/ Z: ~' K
##注释 binlog_format=mixed8 E" g/ J- U0 c5 p. E
参考1:Mysql 日志爆满,删除日志文件,定时清理日志
2 v% G! _1 W4 ~- c参考2:Mysql之binlog日志说明及利用binlog日志恢复数据操作记录
% O2 R+ ?9 Z0 N F% `
A8 k% j0 m9 v2 f- L! f$ PNginx 日志
$ \8 `# \3 G7 P3 L手动清理日志文件0 O% C" }7 i+ |2 f* r
nginx log;
8 P% q% @# E. {7 ]3 l以前博客被CC攻击/压测的时候每天产生6 7 8GB的日志/home/wwwlogs 我存放位置;
6 R& ?3 {0 j! z2 ^( q2 z6 @7 M$ e$ _9 x; G) H, X
找到相关日志,直接使用命令 ls 查看有多少日志;
" S( _& A8 t, ?+ |6 _1 M5 }1 n& i0 ?6 D
root@localhost:/home/wwwlogs# ls
9 q( g: C- t; ~( @( Fnginx_error.log! I* I% u% o0 J. y3 F
GeoLiteCity.dat limbopro.com.log
$ [' f* \% L: ~) y( ?5 y( I( P9 ]access.log 9 v/ S: X U# g R* X5 V
使用 > + 文件名 清理日志文件;
9 L- k9 s! _; J) F' G$ X" r- m) N: M' V9 b% u4 U7 ^ M
root@localhost:/home/wwwlogs# > limbopro.com.log( Z. Z+ Q7 a; o( r' m
root@localhost:/home/wwwlogs# > access.log " D8 I& Z4 D* X- C% c) D, X7 O7 ?
定时清理日志文件
3 ^& Y1 r9 h- Y% P% @; o7 `4 S使用 crontab 定时清理日志文件;% `4 f( M2 ~! C- D, V, r& g
" `& m/ s, w" q* j' V! E
root@localhost:/home/wwwlogs# crontab -e1 C7 [! z8 R# V2 P' L2 x
添加一条,设置每日凌晨零点自动清空日志:
9 Q9 J* t4 N* w* }5 d& h8 [ r
$ H t( ]* ]6 N# T" Y5 X g0 0 1,15 * * > /home/wwwlogs/limbopro.com.log; #每月1和15号自动清理日志- F, K, E4 h( H
0 0 1,15 * * > /home/wwwlogs/access.log; #每月1和15号自动清理日志
' `4 _ O/ F' o' v( ]3 B6 O' z保存,退出,重启 Crontab;
u5 d3 `; ^# K
( f5 L( I& D. g3 c0 {3 X! x$ yroot@localhost:/home/wwwlogs# service cron restart
- M* S- c( L, ?% c+ zroot@localhost:/home/wwwlogs# service cron reload! D( G! m% [, a# I. c; F8 \
*日志文件具体位置,以实际为准;本方法比较粗暴;
0 i" f Z. |$ i' B, q7 v2 ?/ ~) l: J0 S
参考1:Linux crontab命令及其用法;7 D! {3 N8 `+ M0 o0 e0 |+ [$ |
. N2 g# W4 w8 d5 ]
journalctl 日志清理
9 e K# S! ^, V8 x3 } q! c5 D配置文件路径: /etc/systemd/journald.conf;- H/ H, B1 v3 d$ T/ {
日志存放文件夹:/var/log/journal;6 O8 d: N0 o7 `% |% g5 L
, f) s! Z- p1 K/ }7 \systemd本身使用 systemd-journald.service 来提供日志服务. 它默认以二进制的格式将日志文件存在 /var/log/journal/ 目录中。
1 i' f* t r/ @5 [, I7 |9 |
, R1 f( V, V0 U4 P清理大于20MB的日志,大家可以将清理命令放在 crontab 自动运行:
I, ? V3 w: K, ^( t$ N4 i# I% s0 X3 a) [ A" l- j
journalctl --vacuum-size=20M4 T3 c, E1 s# [4 V1 ~
系统日志清理
$ R0 Q2 I3 L5 @系统日志位于 /var/log;日志文件会变得越来越大,我们可以用ncdu工具来查看大日志文件。
4 e( E9 n7 f" `; d k
+ H* A; V2 N9 j3 V, V0 Nsudo apt-get install ncdu' c3 F. q8 s* e( T
sudo ncdu /var/log #然后按i键
8 `9 A& M* `& p/ Q2 K6 Y5 Gncdu 1.14.1 ~ Use the arrow keys to navigate, press ? for help 5 i* D* ]% G% I$ S# j
--- /var/log ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
3 `, p. g/ Z+ I/ Q! d& A 48.0 MiB [##########] /journal ┌───Item info──────────────────────────────────────────────┐ , p% k6 l5 f4 K6 }; A( ?
16.9 MiB [### ] auth.log │ │% x8 X! x9 {! V) k& w' J
15.0 MiB [### ] redis_6379.log
, v2 s) L/ I' u# h8 v..., d8 H% ~& R: M; b1 {" w2 a$ w8 j
然后进入 /var/log/2 \% X' |. |- L& t
% `! P# U1 y0 o) ^5 b+ K; icd /var/log/3 y( G, v" j' [. b# p, a
> redis_6379.log8 ?2 ]9 e V$ [: A& [( u
安装包清理
# x, [3 L) \3 m! [- U2 q6 M" L9 x1 O查看安装包缓存大小' E C: Q0 r5 P
' _+ Q0 I2 e1 C5 r# N$ l
du -sh /var/cache/apt/archives
! A& [3 E: W9 b, N L( g/ B @使用如下命令删除已经安装过的deb包( K+ t: m+ G; T( _$ q. X% N$ q
7 s# B- P6 e* a2 Q2 }9 R6 G0 z' |
sudo apt-get clean
/ t$ z/ d- Y1 o) Y2 h' q2 Hsudo apt-get autoclean
: Z+ g; h* i0 i# _7 `: `删除孤儿软件包 已经没有用处的依赖
; p: ~ Z- R- z$ |5 u/ w: ] [2 O3 p9 G6 i) E2 D" {
sudo apt-get autoremove
4 m% O. f& t. G. e+ ^1 C清除手动安装的依赖包4 N9 G1 _: x$ U, R# U6 C
4 ?$ ]& H1 ~9 p6 m2 X* M2 t
deborphan
" S. j4 j2 h% `* U Ysudo apt-get install deborphan
: q! H# I" Y: W# Y5 D N1 F% n9 jdeborphan | xargs sudo apt-get purge -y% d, O Z. P: ?! V! m3 m" [5 }
删除大容量已安装软件包# S0 E* h9 Z& _1 O7 `
首先安装debian-goodies' ?3 j3 U0 x3 M5 f- V5 O: Y6 ~
T# u. u; n* R+ Y; {3 s; @; x- n1 _ N
sudo apt-get install debian-goodies/ d" e9 ^' A; ]2 E( G
然后输入下面的命令/ J" ?$ b/ I% R! K7 W
) _8 p5 w- i& O6 k4 N9 W
dpigs -H1 l& T @2 L% I4 G0 B( E6 s
我的输出结果
# W, x8 Y& d4 D. k' S1 g) H8 M2 Y; E4 B/ {( t* G; a6 c0 ^
531.3M linux-firmware& ^. J# m3 B# N X
315.0M fonts-noto-extra
- B+ X4 W, s' U0 e' b9 l0 p282.0M libgl1-mesa-dri, N& `/ V6 R5 K, d
214.7M golang-1.13-go
. g; g. s# q, O& V7 k212.9M linux-image-4.11.8-041108-generic& N) N2 x% r9 ?5 F- J3 O5 x
181.1M linux-modules-extra-5.4.0-60-generic
7 O" C+ U5 V* k) @. j' V U% w' E- x181.1M linux-modules-extra-5.4.0-59-generic$ W& J' f. j/ W. j; A% I5 O
181.1M linux-modules-extra-5.4.0-58-generic
+ I' ~& Z1 j: v$ a2 X& r- t- g4 ?% m166.2M docker-ce-cli: J8 d. f0 Y. V/ r
123.3M containerd.io
7 O6 J6 i1 Y# X& Q( Q6 J上面的命令默认只会显示前10个结果,你可指定结果的个数,比如20个" W3 s% D! ]. N6 y1 V6 D
# Y7 Y5 j$ q% c X; ~4 @
注意!linux-modules-generic 是内核,请先确认当前的内核是哪个版本,否则可能导致无法开机;见后文 旧的内核清理** 部分;
5 B# d1 m/ Y( v7 C7 C( U' ddpigs -H --lines=20
( P7 ?: o$ c% i$ q软件包卸载命令$ ~" W6 B6 t- d4 g4 l
) D: \* b3 C X2 Wapt-get purge #purge 后面接软件包名称
n+ t6 `! S/ x$ e7 papt-get --purge remove #配置文件也清理掉 命令后面接软件包名称: ^& e$ e1 L( D% T8 t
示范 以 删除 golang-1.13-go 软件包举例;
1 J, r+ _6 ?1 Z- F9 Y
* m U+ ~/ l3 f8 V8 o. |root@localhost:~# apt-get purge golang-1.13-go
7 R) W- ]* Y& X: l; d$ G: t正在读取软件包列表... 完成
! }0 A( _: Z# S1 o正在分析软件包的依赖关系树 ! W% N9 g8 i# N- e
正在读取状态信息... 完成 / Z: h9 \# D Y
下列软件包是自动安装的并且现在不需要了:7 _- w* n: P% |+ i6 L% q* y
golang-1.13-race-detector-runtime golang-1.13-src golang-race-detector-runtime golang-src' f5 e- Y# Y, y9 |! j
使用'apt autoremove'来卸载它(它们)。# H( f, v6 }2 Z4 P9 C4 w
下列软件包将被【卸载】:
1 \& n7 W2 [& F9 n \2 B golang* golang-1.13* golang-1.13-doc* golang-1.13-go* golang-doc* golang-go*# P4 U. e/ \7 E+ Q) h; U
升级了 0 个软件包,新安装了 0 个软件包,要卸载 6 个软件包,有 57 个软件包未被升级。% M9 L1 b/ g3 x9 f/ u1 r* `2 B
解压缩后将会空出 230 MB 的空间。3 Y5 K7 s, w% H8 D3 ^& s8 Q
您希望继续执行吗? [Y/n] Y
0 x! t# X9 q8 s% L" }( i$ V5 b旧的内核清理* x0 L( H- N+ N, ?+ M, L
查看当前使用的内核
O% a: \& x: F, u: c- D
3 X; g+ K8 E, T9 \$uname -r
+ h! { x9 P1 M# w8 S4 }% e7 |5.4.0-60-generic( i! V3 q) `0 W
$dpigs -H --lines=201 z+ e/ N6 J9 ~
74.1M linux-headers-4.14.91-bbrplus
! ]# d! o; n* J6 q70.0M linux-modules-5.4.0-60-generic //保留' e0 T: G' W3 ^
70.0M linux-modules-5.4.0-59-generic //保留
+ E& {) `7 D/ [: `! W& `0 s# X...
: B* F* S+ n' E- u$ b" q看看有没有不再用到的旧内核,然后使用 apt purge 清理它们(从最旧的开始);* z# M* p" c" @- X6 `6 q7 ~' P5 P ]
1 ~. ]( h! R& z0 `
$apt purge linux-headers-4.14.91-bbrplus2 G2 ` S% z1 A& \ h
运行以下命令 update-grub 来更新和重建 GRUB 配置(通常在内核删除时会自动执行,但手动运行可以双重保险):% }% Q& G' L* Y+ q1 M/ l- x, @
$ p' v* Y! {. W% H- a
$update-grub
% r* A) T/ E9 n1 ?. {Sourcing file `/etc/default/grub'( U. a2 f7 v3 _$ b5 }
Sourcing file `/etc/default/grub.d/init-select.cfg'7 O0 N7 U+ i, Y! ^2 i" {) i8 M
正在生成 grub 配置文件 ...
. w. w8 [( d0 g% B8 g找到 Linux 镜像:/boot/vmlinuz-5.4.0-60-generic // 还在
5 u; R' B7 [5 ]4 Z9 o5 @: |找到 initrd 镜像:/boot/initrd.img-5.4.0-60-generic
6 \, T. n6 P" _/ @找到 Linux 镜像:/boot/vmlinuz-5.4.0-59-generic3 e: V6 ~" C6 r
找到 initrd 镜像:/boot/initrd.img-5.4.0-59-generic; } g8 M' E8 A- M5 X: s' Z
找到 Linux 镜像:/boot/vmlinuz-5.4.0-58-generic
6 E% j6 `( c6 w* e3 A; C/ _找到 initrd 镜像:/boot/initrd.img-5.4.0-58-generic
8 f* S( f! ^/ K6 J完成
# o0 h+ Y/ ~4 K M# {0 |9 b+ W...
0 o* ~+ V% g5 L2 j3 j8 d
6 B# p* _& b3 z相关知识8 O# n, h1 l5 w; Y1 d9 R
LINUX的磁盘管理du命令详解5 {. t$ O2 t1 U- Z" }) u6 w
/ t, [6 a6 g# H$ C4 R6 Zdu(disk usage)命令可以计算文件或目录所占的磁盘空间。没有指定任何选项时,它会测量当前工作目录与其所有子目录,分别显示各个目录所占的快数,最后才显示工作目录所占总快数。: O7 h; _" O8 l. d
" S8 I/ x: s7 V$ ^+ H: i
DU命令用途
) p% u U1 S |6 B1 n- U3 ^% xdu(disk usage)命令可以计算文件或目录所占的磁盘空间。没有指定任何选项时,它会测量当前工作目录与其所有子目录,分别显示各个目录所占的快数,最后才显示工作目录所占总快数。
8 L6 O3 H$ Y, B8 Y+ g8 o7 O
, K0 c; B5 m8 \9 @4 i7 e( o8 W找出大文件6 P9 N; A1 i8 X& g8 ?2 I5 j
磁盘空间被耗尽的时候,免不了要清理一下,比如说/home目录太大,就可以使用下面命令看看到底是谁: L% n" t \3 |% ^0 W4 h( D
, O+ ~3 k+ l2 A. Q0 x8 ^/ H
du -s /home/* | sort -nr #/home目录检测6 l" V# f7 p* R) D2 }6 H- m
: Y/ H7 b" }2 V/ f3 Y |
免责
帖子地址
打造全网最多免费游戏网站,部分资源失效,私聊站长补
|