Linux 服務(wù)器上的大文件查找及清理實(shí)踐

生產(chǎn)上的 Linux 服務(wù)器磁盤空間不足,后面排查得知是某個(gè)應(yīng)用頻繁寫 log 導(dǎo)致总寒。于是加了一條自動(dòng)清理過期日志的 crontab 糕簿。
具體的排查過程記錄如下,都是很基礎(chǔ)的命令埃唯。

一、df

df -h 命令查看當(dāng)前磁盤空間的使用情況:

# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        50G   50G    0G  100% /
devtmpfs        3.9G     0  3.9G   0% /dev
tmpfs           3.9G   24K  3.9G   1% /dev/shm
tmpfs           3.9G  476K  3.9G   1% /run
tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
tmpfs           783M     0  783M   0% /run/user/0

系統(tǒng)只有一個(gè)磁盤分區(qū) /dev/vda1鹰晨,大小為 50G墨叛,已掛載到根目錄下,用量為 100%模蜡,確實(shí)沒有剩余空間漠趁。

以此可斷定并非存在分區(qū)劃分不合理的情況。比如磁盤大部分容量分配給了其他分區(qū)忍疾,掛載到諸如 /home闯传、/usr 等目錄下導(dǎo)致 / 路徑下沒有足夠的空間。

二卤妒、lsblk

lsblk 命令查看硬盤的分區(qū)與掛載點(diǎn):

# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0     11:0    1   37M  0 rom
vda    253:0    0   50G  0 disk
`-vda1 253:1    0   50G  0 part /

當(dāng)前只有一塊硬盤 vda甥绿,大小為 50G,全部分配給了唯一的分區(qū) vda1则披,不存在剩余空間妹窖。

此處可以確定硬盤的所有容量都已被分配使用。不存在剩余空間(未分配區(qū)域)或者因?yàn)?LVM 卷導(dǎo)致仍有空閑存儲(chǔ)未被使用等情況收叶。

三、du

du 命令統(tǒng)計(jì)文件和目錄占用的磁盤空間大小共苛。

du 命令默認(rèn)會(huì)以遞歸的方式輸出當(dāng)前路徑中包含的所有文件的大信忻弧(以目錄為單位顯示),信息量有時(shí)會(huì)比較龐大隅茎。
可以使用 -s 選項(xiàng)獲取當(dāng)前目錄下所有文件的大小總和澄峰。或者使用 -d 選項(xiàng)指定遍歷的深度辟犀,即只統(tǒng)計(jì)到某一層目錄而無需展開到更深層的子目錄俏竞。

當(dāng)前 Linux 服務(wù)器上的應(yīng)用都部署在某個(gè)特定的路徑下,因此切換到該目錄并統(tǒng)計(jì)其中文件占用的磁盤空間大小總和:

# du -sh
12G     .

通過 -d 選項(xiàng)指定遍歷的層數(shù)為 1,顯示當(dāng)前路徑下包含的每一個(gè)子目錄各自占用的磁盤空間總和:

# du -hd1
80K     ./work
7.6M    ./lib
12G     ./logs
236K    ./conf
4.0K    ./temp
221M    ./webapps
15M     ./backup
860K    ./bin
12G     .

可以看到 logs 子目錄下的文件總共占用了 12G 存儲(chǔ)空間魂毁,幾乎與整個(gè)目錄大小相當(dāng)玻佩。因此基本可以確定 logs 目錄為需要進(jìn)一步排查的對(duì)象。

PS:如當(dāng)前路徑下子目錄眾多席楚,也可以使用 sort 命令對(duì)輸出結(jié)果按大小進(jìn)行排序咬崔。

# du -d1 | sort -nr
12448764        .
12199320        ./logs
225988  ./webapps
14432   ./backup
7736    ./lib
860     ./bin
236     ./conf
80      ./work
4       ./temp

sort 命令的 -n 選項(xiàng)表示以數(shù)字大小為排序依據(jù),-r 則表示逆序輸出排序結(jié)果烦秩。
du 命令去掉 -h 選項(xiàng)則避免將文件大锌逅埂(bytes)自動(dòng)轉(zhuǎn)換為 KB、MB只祠、GB 等導(dǎo)致單位不一致兜蠕。可以使用 -k-m 等選項(xiàng)手動(dòng)指定 du 命令的單位抛寝。

四熊杨、ls

ls 命令獲取指定目錄下包含的文件列表(及詳細(xì)信息)。

# ls -Slh logs | head -8
total 12G
-rw-r--r-- 1 tomcat Devops 3.5G Dec 29 01:40 catalina.out
-rw-r----- 1 root   root   108M Nov 15 00:00 localhost_access.2019-11-14.log
-rw-r----- 1 root   root   107M Nov 22 00:00 localhost_access.2019-11-21.log
-rw-r----- 1 root   root   106M Nov 14 00:00 localhost_access.2019-11-13.log
-rw-r----- 1 root   root   104M Nov 17 00:00 localhost_access.2019-11-16.log
-rw-r----- 1 root   root   104M Nov 23 00:00 localhost_access.2019-11-22.log
-rw-r----- 1 root   root   104M Nov 13 00:00 localhost_access.2019-11-12.log

其中 -S 選項(xiàng)用于將輸出結(jié)果按文件大小排序墩剖,-l 選項(xiàng)指定輸出各文件的詳細(xì)信息猴凹。由于 logs 目錄下文件眾多,使用 head -8 篩選前 8 條輸出進(jìn)行顯示岭皂。

此時(shí)即可根據(jù)對(duì)文件大小和功能的判斷手動(dòng)執(zhí)行刪除操作郊霎。

五、find

find 命令篩選指定時(shí)期內(nèi)創(chuàng)建的文件

logs 目錄下每天都會(huì)創(chuàng)建新的日志文件爷绘,導(dǎo)致占用的磁盤空間與日俱增书劝。因此需要定期刪除指定日期以前的舊文件,釋放不必要的空間占用土至。

如刪除當(dāng)前目錄下只在 60 天以前修改過的文件购对,保留最近兩個(gè)月的日志記錄:

# find . -mtime +60 -type f -exec rm {} \;

將該命令添加到 crontab 中,設(shè)置好定時(shí)規(guī)則陶因,即可定期執(zhí)行清理任務(wù)骡苞,避免過高的磁盤占用。

命令總結(jié)

  • du -h:查看當(dāng)前系統(tǒng)中磁盤空間的使用情況
  • lsblk:查看當(dāng)前系統(tǒng)中磁盤的分區(qū)和掛載情況
  • du -hd1:查看當(dāng)前目錄下各子目錄分別占用的磁盤空間大小
  • ls -Slh | head -8:列出當(dāng)前目錄下所有文件的詳細(xì)信息楷扬,結(jié)果由大到小排序解幽,輸出前 8 條
  • find . -mtime +60 -type f -exec rm {} \;:查找當(dāng)前目錄下所有 60 天之前修改過的文件并刪除
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市烘苹,隨后出現(xiàn)的幾起案子躲株,更是在濱河造成了極大的恐慌,老刑警劉巖镣衡,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件霜定,死亡現(xiàn)場(chǎng)離奇詭異档悠,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)望浩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門辖所,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人曾雕,你說我怎么就攤上這事奴烙。” “怎么了剖张?”我有些...
    開封第一講書人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵切诀,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我搔弄,道長(zhǎng)幅虑,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任顾犹,我火速辦了婚禮倒庵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘炫刷。我一直安慰自己擎宝,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開白布浑玛。 她就那樣靜靜地躺著绍申,像睡著了一般。 火紅的嫁衣襯著肌膚如雪顾彰。 梳的紋絲不亂的頭發(fā)上极阅,一...
    開封第一講書人閱讀 51,462評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音涨享,去河邊找鬼筋搏。 笑死,一個(gè)胖子當(dāng)著我的面吹牛厕隧,可吹牛的內(nèi)容都是我干的奔脐。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼吁讨,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼帖族!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起挡爵,我...
    開封第一講書人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎甚垦,沒想到半個(gè)月后茶鹃,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體涣雕,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年闭翩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了挣郭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡疗韵,死狀恐怖兑障,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蕉汪,我是刑警寧澤流译,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站者疤,受9級(jí)特大地震影響福澡,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜驹马,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一革砸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧糯累,春花似錦算利、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至仗岸,卻和暖如春允耿,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背扒怖。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工较锡, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人盗痒。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓蚂蕴,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親俯邓。 傳聞我的和親對(duì)象是個(gè)殘疾皇子骡楼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容