- 积分
- 16843
在线时间 小时
最后登录1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?开始注册
x
今天zabbix报警,一台服务器的disk满了,使用du -sh * 或 du -sh /* 查看目录的大小,查找占用空间大的目录/var/spool/clientmqueue….0 v/ H9 M& G* o; j
解决* N; L. n4 k3 }9 G2 N
1 d1 E0 t) ?' C
O0 W& \, J! s, z5 t J
解决方法:在cron的自动执行语句后加上> /dev/null 2>&1; ~" n/ M! r/ S* \( j, h4 K z0 H
例:
M4 O+ \& n5 E% R8 B9 M& X( p8 I* 3 * * * /usr/bin/w > /dev/null 2>&1. z5 z' n$ u, A/ [' [% x
这样就OK拉,就不会写到那个目录下了….+ I b; h0 M/ A/ n! }
: j7 x! g6 ?+ @: F" O& [3 a
% `$ P+ `( @5 @$ M
恢复的唯一办法就是删除这些文件, 此方法仅仅用于大量的临时文件和缓存占用的inode. 如果数据不可删除, 就要想办法增加空间了。这里只讲怎么找到这些文件和删除它们.3 A I! u; ], A. g9 O, M
a3 V# s! x. z, [' v3 i. y
; Y3 A6 ^ h# m' |4 v% f检查inode剩余2 a V6 t2 `+ w7 S$ o/ {
df -i4 B6 s f8 q6 s
Filesystem Inodes IUsed IFree IUse% Mounted on7 ?8 v- n% K4 e2 Q2 @: M I: n5 S
devtmpfs 998158 373 997785 1% /dev
. K3 A* f, U8 g0 a+ n: Ctmpfs 1001093 1 1001092 1% /dev/shm
% a% W5 Q4 g }4 ^: ~, E# vtmpfs 1001093 557 1000536 1% /run
: W' f0 D/ N8 X) Q- ztmpfs 1001093 16 1001077 1% /sys/fs/cgroup( V1 b" ?6 Y. |0 @) p) }
/dev/mapper/centos-root 286781440 67061 286714379 1% /
6 u0 v$ B/ s: i) z$ _5 j# R' f6 Z/dev/vda1 524288 350 523938 1% /boot
' x- t/ Q9 h% htmpfs 1001093 1 1001092 1% /run/user/1002
) `; L: S# z- _* e z. Qtmpfs 1001093 1 1001092 1% /run/user/0
7 N O* `$ {3 @2 H5 Stmpfs 1001093 1 1001092 1% /var/log/rtlog
1 ]: M# P Q$ x( R# u c! A3 U
2 s% Q9 ]# u/ }3 E ]5 y) R
" N' s5 u% [# {5 u/ c% v% h i: ~9 I, y
5 P; F/ w; h) e3 ~4 d
/ E/ r$ O3 \9 H0 \( r: M
在这里我的inode用的就很多了。1 K- W0 o i& O! J2 J4 ~
* e6 y# ?- v) T: v* ?- ^7 `
3 I2 Q" C/ S/ f2 N/ J
首先找到这些占用的无用文件
4 m+ }/ q i z6 s- g! p. ufor i in /var/* ;do echo $i ;sudo find $i |wc -l ;done
+ U* f. [# L5 E5 D9 a
8 y. S( U) B. G6 z) U1 D+ v
" z: V& k: w2 {! S* ?( {5 f6 K! W/ y1 e9 i# ]( t3 g# i, u' N' {2 `# u
% u7 ~. I) s9 k3 `. G3 `/ r
for i in /*; do echo $i; find $i |wc -l; done
) q( K' p$ d$ ]+ j7 L% e! |! d. w2 R5 H
执行上面的语句后, 会顺序从根目录的子目录循环查询, 如果有一个目录卡了很久, 就说明此目录可能存在很多文件.
( y+ c, f& J# a: O( j* _4 T0 u
* [- X" H- E- n& _
6 m0 `; e& ?1 m! `% T1 Q然后到这个目录下继续查找% ]# F4 r1 R' y* o$ _, B1 J
3 H& t9 z9 i/ C3 `# b7 N2 R
9 L* Q* V# |9 K, u$ b* A循环这个过程直到找到.% R- K' v" i" k" C$ q
; O* m/ k& V( ?, N# c
4 u- F$ E2 u( v( V2 d D! L* E找到后酌情删除,删除后inode就会释放.
9 b2 ^ s2 H. I9 p, ]. L
. R5 l; T4 h0 Y: l: T' X. H% S7 M9 @' `4 t' ~2 t% o% V
在这里说一点,/var/spool/clientmqueue目录文件太多,rm -rf *时候会提示:
& f+ C+ u' f5 y8 G. q$ ~3 Y; N( r- R. U. M2 I5 C
+ r4 l/ c p8 Z! F% S
“-bash: /bin/rm: Argument list too long“.. 意思是参数太长,rm 干不了。5 l C; b3 C$ j, j O: T
7 D c9 c4 m' }* ~- |3 l
) L2 ?+ E N* S* K7 r/ Z
可以用ls | xargs rm -f这个命令将/var/spool/clientmqueue目录下所有文件删除。6 t& {8 G t$ ^
) Q& V: o4 h7 r0 ]- L% c! c4 p0 L/ U: T( i, J
由于使用云服务器,无法直接删除,特写删除脚本如下:
( b+ {: w. i# L7 U, ?- N& |. Q" X
# t' B4 `! i" n) i) x1 {3 o% S( v1 O* W
#!/bin/bash+ A( k7 | S, Y
3 X& L% c# Q. x o2 U, I
0 R1 N) v, p" r! n, M1 o: Rcd /var/spool/clientmqueue b4 x7 m$ X- ?* t
6 G0 h) n" S" V1 [4 s0 T
+ _7 V) U* K( C& p' A5 V; yfilelist=`ls /var/spool/clientmqueue/`
1 z3 ~$ k- X% J! O' ]) I4 u _$ p, n. m" \4 J3 w
+ H6 ?" y u+ T) E& sfor file in $filelist
9 o9 h- O5 j e# Sdo
+ {3 ]. S6 K B; P
7 x8 `6 J" w# |! u
: r: g2 S7 V; ^4 u4 `0 z; g7 G echo $file. X/ ]0 ] p1 i# ?( X8 G- F
sudo chown ec2-user:ec2-user $file- s7 d* }$ r: V2 |
sudo rm -rf $file
( }) O7 X* K1 O# {7 t3 [ #sleep 2;- k9 n% @1 S* ~8 |' Z. O0 ~2 g
done
9 ?8 x; r3 Z9 i! Z7 ?8 s& f- W
8 p4 v7 L8 c% q5 R( V% @. W) d# l0 Z/ W
|
|