memcachedb使用的BerkeleyDB的數(shù)據(jù)庫,但每10M生成一個log文件:
[root@aslibra db]# ll -h
total 26G -rw-r--r-- 1 root root 25G Jun 22 00:12 data.db -rw-r----- 1 root root 24K Jun 20 19:33 __db.001 -rw-r----- 1 root root 3.8M Jun 20 19:33 __db.002 -rw-r----- 1 root root 81M Jun 20 19:33 __db.003 -rw-r----- 1 root root 96K Jun 20 19:33 __db.004 -rw-r----- 1 root root 11M Jun 20 19:33 __db.005 -rw-r----- 1 root root 48K Jun 20 19:33 __db.006 -rw-r----- 1 root root 10M Jun 21 22:47 log.0000002271 -rw-r----- 1 root root 10M Jun 21 22:47 log.0000002272 -rw-r----- 1 root root 10M Jun 21 22:48 log.0000002273 -rw-r----- 1 root root 10M Jun 21 22:49 log.0000002274 ..... 定期清理為好,否則就要有兩倍數(shù)據(jù)的空間了,以前寫的是定期清理某個時間修改的日志: find /BerkeleyDB/aslibra.com/db/ -maxdepth 1 -type f -name 'log.*' -mmin +100 | xargs -i rm -f {}
清理100分鐘前的文件,導致了一個文件,如果停用或者100分鐘內(nèi)沒有更新動作,將刪掉了所有日志,吃虧了,導致啟動失敗了,當然,可能可以修復,只是糊涂的話就沒法再啟用了。 穩(wěn)當點,就刪除所有的日志文件,保留最新的100個: #!/bin/sh
cd /BerkeleyDB/aslibra.com/db/ ls -t log.* | awk '{ if(NR>100)print $0}'|xargs -i -t rm -f {} 簡單解析一下腳本意思: ls -t log.* 是列出所有l(wèi)og開頭的日志文件,按時間排序,也就是最新的排前面 awk里面NR代表當前行數(shù),NR>100則是100行后的才輸出 xargs就是接收到awk輸出的文件才轉(zhuǎn)給rm刪除 |
|