服務上線有段時間了,今天收到磁碟報警通知,想應該是日誌報警,於是想通過自動化刪除7天前的日誌資訊,具體操作步驟如下(前兩步排查檔案大小):
1、登入伺服器檢視磁碟占用情況
是/mvsp的目錄占用空間太多
2、再通過du命令檢視是哪個目錄占用日誌大
3、現在確定是日誌檔案了,下面做自動刪除
3.1 建立乙個 clearlog.sh 檔案,內容如下
#!/bin/bash
find /mvsp/logs/logs -name "*.log_*" -mtime +7 -ls >> /mvsp/delete_$(date +%y-%m-%d).log | xargs
find /mvsp/logs/logs -mtime +7 -name "*.log_*" -exec rm -rf {} \;
第一行說明:用於記錄刪除的檔名
「 find 」查詢
「 /mvsp/logs/logs 」指定目錄
「 -mtime +7 」7天前的(天數可自定義)
「 -name "*.log_*" 」所有檔名中包含 .log_ 的檔案
「 | xargs -i mv {} 」固定寫法
「 /mvsp/delete_」檔名
完整意思:查詢/mvsp/logs/logs 目錄下 7天前的所有檔名中包含 .log_ 的檔案,然後檔名儲存到 /mvsp/delete_*.log檔案中 。
第二行說明:
find 」查詢
「/mvsp/logs/logs 」指定的目錄
「 -mtime +7 」7天前的(天數可自定義)
「 -name "*.log_*" 」所有檔名中包含 .log_ 的檔案
「 -exec rm -rf {} \ 」固定寫法
完整意思:查詢/mvsp/logs/logs 目錄下 7天前的所有檔名中包含 .log_ 的檔案,然後將它們全部刪除。
3.2 給 clearlog.sh 新增執行許可權
chmod 777 clearlog.sh
3.3 設定定時任務:新增定時執行 clearlog.sh 指令碼的任務
crontab -e
新增定時任務(每天凌晨1點執行)
0 1 * * * /mvsp/clearlog.sh
注意:為避免引起不必要的風險,建議先在測試環境使 Linux磁碟空間100 查詢並刪除大檔案
先確定是哪個資料夾占用較多 如果檔案較多命令執行可能很慢,在知道大概位置的情況下不建議直接對根目錄操作 du的 max depth 1表示只展示第乙個層級的目錄和檔案 sort的 h選項和du的 h選項乙個意思,r表示倒敘,預設公升序 du h max depth 1 sort hr head n ...
linux查詢並刪除檔案
linux有著強大命令列處理,如果用的好,效率會非常的高,如果用的不好,那很可能造成致命的錯誤。就拿刪除 svn 檔案為例吧 如果你在修改別人寫的原始碼,裡面已經有了 svn 檔案,那麼你想把這些檔案上傳到你自己的版本庫裡面,如果乙個乙個刪除 svn 檔案就太挫了。linux下只需要一句命令即可 f...
Linux查詢大檔案
有時候我們在系統上安裝了數十個應用 最簡單的方法就是借助 ls 命令,因為 ls 命令本身輸出是帶檔案大小資訊的。比如,我要列出 bin 目錄中的 5 個最大檔案,可以 ls lsh bin head 5 find 本身就是查詢命令,可以遞迴查詢乙個目錄的子目錄,所以用它是自然的。比如,查詢 目錄下...