- 积分
- 16844
在线时间 小时
最后登录1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?开始注册
x
今天zabbix报警,一台服务器的disk满了,使用du -sh * 或 du -sh /* 查看目录的大小,查找占用空间大的目录/var/spool/clientmqueue….% s3 {; q, y7 I# Z4 z6 H* [1 y
解决
: L2 x5 |* D6 a; {( o4 W% P
" g. H3 @0 t; c5 ?+ p- |3 k/ c
3 t' |; \2 O2 ~解决方法:在cron的自动执行语句后加上> /dev/null 2>&1+ i, B* j1 H! G9 N- B4 {7 u7 p& D
例:' T" F, i+ T8 z
* 3 * * * /usr/bin/w > /dev/null 2>&1
# n6 t# h; j2 P- j3 M" z2 S# h5 n# ~这样就OK拉,就不会写到那个目录下了….3 H: f, y5 K4 |
' [2 X+ v5 E) [% V% p
6 F2 x3 P7 C9 d恢复的唯一办法就是删除这些文件, 此方法仅仅用于大量的临时文件和缓存占用的inode. 如果数据不可删除, 就要想办法增加空间了。这里只讲怎么找到这些文件和删除它们.
. }$ [/ o) u; y4 w3 ], ^! }- m @
" a$ y4 |, P6 l* V" T
检查inode剩余
X; R1 P( t/ g, @2 A, I. Vdf -i6 K' p/ F; C$ Y2 y/ {5 m- \" b1 m
Filesystem Inodes IUsed IFree IUse% Mounted on( N/ a: Y( }4 k
devtmpfs 998158 373 997785 1% /dev
r( b2 F$ t* B* ytmpfs 1001093 1 1001092 1% /dev/shm
/ z! p/ ]9 D. V# `$ p) itmpfs 1001093 557 1000536 1% /run
) c( t4 L R {4 F( }tmpfs 1001093 16 1001077 1% /sys/fs/cgroup1 {5 l9 U7 V: K2 ~+ t6 t* ^
/dev/mapper/centos-root 286781440 67061 286714379 1% /! j% ^; V4 J: w+ b
/dev/vda1 524288 350 523938 1% /boot
* A4 f7 H& a: p/ @( @$ }tmpfs 1001093 1 1001092 1% /run/user/1002
6 v6 l. C& c0 G, n( q, D$ _tmpfs 1001093 1 1001092 1% /run/user/0: ]9 K9 G, O/ T# B. z {' y
tmpfs 1001093 1 1001092 1% /var/log/rtlog: E4 I4 Y- b% a! h/ x( v
! a6 i/ Y) v% D% t% Q7 d
% ?% @9 q5 f/ n) T( T* I6 i& r9 w2 e8 ~, [0 T; f/ b/ J1 Q
" L) s4 m) P$ b' T
5 |5 I% V H f在这里我的inode用的就很多了。( k4 S& u+ s# B
q) y7 J9 u/ e. V2 D2 e* g( ]0 `8 s$ [' ?2 T& O' h) t( c
首先找到这些占用的无用文件/ z9 U; T2 K) `+ ~# _
for i in /var/* ;do echo $i ;sudo find $i |wc -l ;done
( X0 b3 Y3 q; [9 \" X3 ]; }! G
4 @8 m5 o4 Y. O0 `- x$ i2 d
: B. H; k, S- `7 c
e/ B/ M6 E' C R: J6 D4 o$ M6 b$ ^, C2 t1 D; A. ?
for i in /*; do echo $i; find $i |wc -l; done
" U( O4 N4 R" j0 v: d I
" d/ p1 N( W- J执行上面的语句后, 会顺序从根目录的子目录循环查询, 如果有一个目录卡了很久, 就说明此目录可能存在很多文件.
; y8 P R0 J9 b
+ z" {& H% i% G6 n1 [/ l; j& W% S1 @, O
然后到这个目录下继续查找2 c% [, O+ ^1 r, o/ J4 | R
- t3 Q. H7 t1 [: q% M; D. V" R
; a6 q. Z. q6 k2 `循环这个过程直到找到.5 x, Y6 t5 b0 e( E4 e
1 K1 H( y% T$ |0 N
: M/ v3 p. z& C找到后酌情删除,删除后inode就会释放.) W+ w4 s3 k$ O3 O( T o+ K2 W
2 H0 i. \, r3 I" a3 a" h0 e/ p
: b1 h9 Z4 `% j$ J* h在这里说一点,/var/spool/clientmqueue目录文件太多,rm -rf *时候会提示:
+ Z& J8 f; `( X5 i# d
- t& v$ b/ a& b5 Z0 v
- K$ z- {" w4 g% G“-bash: /bin/rm: Argument list too long“.. 意思是参数太长,rm 干不了。
7 E, Q) M% w+ o+ t% |! }
+ G2 R, Z8 w$ B% P( l
4 \1 w' w6 P4 w& j; h可以用ls | xargs rm -f这个命令将/var/spool/clientmqueue目录下所有文件删除。, V* z3 a4 h; B4 k; m5 ^8 D
: D% \4 Z/ g4 o1 b+ d- f, a7 ^
" n# k0 }5 C: u" j8 g- D. {% L# T由于使用云服务器,无法直接删除,特写删除脚本如下:4 r# i! g: f: T/ T
% f% j- L" }9 ~6 w [/ F7 L$ ]6 s
3 G# O$ C0 g7 }3 e) `
#!/bin/bash
7 [/ ^/ L0 h/ N; g! W
1 b _9 r/ A f2 _, z/ ~3 ?& @8 p- q9 L
cd /var/spool/clientmqueue. V) Y- v' [+ }
( ^1 I0 `7 H9 [2 e8 m) t% K( ^
: F5 b# o) ?% _2 V5 I* Wfilelist=`ls /var/spool/clientmqueue/`5 k! l1 D0 {% G
3 M5 I0 ]: T8 s+ Y: z
. V6 @# S, B: j- ~# d1 ~for file in $filelist- k, k7 o5 d; U: p" p% ~
do % `& o D3 U$ Z+ M7 l3 }
, C2 I4 N% q8 @8 a# ]' t
( N, X6 M+ k; T* S. g8 K echo $file* v2 i7 ?; f! O0 f! ]8 ]7 H! `
sudo chown ec2-user:ec2-user $file* O% L! n; H! L+ D( `. s! W4 q
sudo rm -rf $file# `- u. R' {* ^) ~0 j
#sleep 2;0 `. {& k/ w1 |4 J; _
done
; j/ T( z: L& g# w" Y6 g
( a3 V( Q8 O- D6 ?0 m& t2 @+ A7 E/ A. }1 H: _. E5 b
|
|