??linux是一個(gè)很能自動(dòng)產(chǎn)生文件的系統(tǒng),在實(shí)際部署運(yùn)行中,發(fā)現(xiàn)日志文件會(huì)占用大量?jī)?nèi)存,且很多日志文件過了時(shí)效是可以刪除的。本文介紹了CentOS自動(dòng)刪除n天前日志、郵件、備份等相關(guān)文件的過程。
一、查找并刪除文件
1.1 查找文件
查找命令:find 對(duì)應(yīng)目錄 -mtime +天數(shù) -name "文件名匹配邏輯"
#示例命令:查找/var/log/taos/ 目錄下所有1天前帶".*_00.log*"的文件
find /var/log/taos/ -mtime +1 -name "*_00.log*"
#查找目錄下大于50M的文件
find /home/tdengine/taos3.0.4.2/server/log/ -size +50M
具體參數(shù)說明如下:
find:linux的查找命令,用戶查找指定條件的文件;
/var/log/taos/ :想要進(jìn)行清理的任意目錄;
-mtime:標(biāo)準(zhǔn)語句寫法;
+1:查找1天前的文件,這里用數(shù)字代表天數(shù);
“.log":希望查找的數(shù)據(jù)類型,".jpg"表示查找擴(kuò)展名為jpg的所有文件,”*"表示查找所有文件,這個(gè)可以靈活運(yùn)用,舉一反三。
1.2 查找并刪除
??刪除文件命令:find【選項(xiàng)】 -exec rm -rf {} \;
#示例命令:將/var/log/taos/ 目錄下所有1天前帶".*_00.log*"的文件刪除
find /var/log/taos/ -mtime +1 -name "*_00.log*" -exec rm -rf {} \;
具體參數(shù)說明如下:
find 【選項(xiàng)】:linux的查找命令
-exec:固定寫法;
rm -rf:強(qiáng)制刪除文件,包括目錄;
{} ; :固定寫法,一對(duì)大括號(hào)+空格++;
手動(dòng)執(zhí)行:(執(zhí)行后再查詢已經(jīng)找不到文件了)
二、計(jì)劃任務(wù):
??若嫌每次手動(dòng)執(zhí)行語句太麻煩,可以將命令寫到一個(gè)可執(zhí)行shell腳本文件中,再設(shè)置crontab調(diào)度執(zhí)行,那就可以讓系統(tǒng)自動(dòng)去清理相關(guān)文件。詳細(xì)步驟如下:
2.1 創(chuàng)建shell腳本,并分配權(quán)限
# 新建一個(gè)可執(zhí)行文件
touch 文件目錄/文件名.sh
# 分配可運(yùn)行權(quán)限
chmod +x 文件名.sh
示例:
touch /home/tdengine/shell/autodel-1daysago-adapaterlog.sh
chmod +x autodel-1daysago-adapaterlog.sh
2.2 編輯shell腳本
- 進(jìn)入編輯命令:
vi 文件名
#示例
vi autodel-1daysago-adapaterlog.sh
- 輸入
i
進(jìn)入編輯模式,編輯.sh文件如下:
#!/bin/sh
find /var/log/taos/ -mtime +1 -name "*_00.log*" -exec rm -rf {} \;
編輯完后, 按esc鍵輸入:wq
保存退出。
2.3 計(jì)劃任務(wù)
??crond是linux下用來周期性的執(zhí)行某種任務(wù)或等待處理某些事件的一個(gè)守護(hù)進(jìn)程,與windows下的計(jì)劃任務(wù)類似,當(dāng)安裝完成操作系統(tǒng)后,默認(rèn)會(huì)安裝此服務(wù)工具,并且會(huì)自動(dòng)啟動(dòng)crond進(jìn)程,crond進(jìn)程每分鐘會(huì)定期檢查是否有要執(zhí)行的任務(wù),如果有要執(zhí)行的任務(wù),則自動(dòng)執(zhí)行該任務(wù)。
2.3.1 新增調(diào)度任務(wù)
新增調(diào)度任務(wù)可用兩種方法
(1) 在命令行輸入: crontab -e
然后添加相應(yīng)的任務(wù),wq存盤退出。
(2)直接編輯/etc/crontab 文件,即vi /etc/crontab
,添加相應(yīng)的任務(wù)。
#進(jìn)入計(jì)劃任務(wù)
crontab -e
#將.sh執(zhí)行腳本加入到系統(tǒng)計(jì)劃任務(wù),到點(diǎn)自動(dòng)執(zhí)行
輸入示例:設(shè)置每天凌晨0點(diǎn)10分執(zhí)行autodel-1daysago-adapaterlog.sh文件進(jìn)行數(shù)據(jù)清理任務(wù)了
10 0 * * * /home/shell/autodel-1daysago-adapaterlog.sh
編輯完后, 按esc鍵輸入:wq
保存退出。
#查看計(jì)劃列表
crontab -l
完成以上三步,你就再也不每天惦記是否硬盤空間滿了,該清理日志文件了,再也不會(huì)受到服務(wù)器硬盤空間不足的報(bào)警信息了文章來源:http://www.zghlxwxcb.cn/news/detail-620313.html
2.3.2 調(diào)度任務(wù)管理
設(shè)置周期性計(jì)劃任務(wù)列表主要通過crontab命令進(jìn)行,結(jié)合不同選項(xiàng)可以完成不同的計(jì)劃管理操作:文章來源地址http://www.zghlxwxcb.cn/news/detail-620313.html
- -e:編輯計(jì)劃任務(wù)列表
- -u:指定所管理的計(jì)劃任務(wù)屬于哪個(gè)用戶,默認(rèn)是針對(duì)當(dāng)前用戶,一般只有root用戶有權(quán)限使用此選項(xiàng)(用戶編輯、刪除其他用戶的計(jì)劃任務(wù))
- -l:列表顯示計(jì)劃任務(wù)
- -r:刪除計(jì)劃任務(wù)列表
同時(shí)還可以和特殊字符一起使用: - 星號(hào)(*):代表所有可能的值,例如月份字段如果是星號(hào),則表示在滿足其它字段的制約條件后每月都執(zhí)行該命令操作。
*逗號(hào)(,):可以用逗號(hào)隔開的值指定一個(gè)列表范圍,例如,“1,3”,表示1和3
*中杠(-):可以用整數(shù)之間的中杠表示一個(gè)整數(shù)范圍,例如“2-6”表示“2,3,4,5,6”
正斜線(/):可以用正斜線指定時(shí)間的間隔頻率,同時(shí)正斜線可以和星號(hào)一起使用,例如/10,表示每十分鐘執(zhí)行一次。
到了這里,關(guān)于linux- 定時(shí)任務(wù)清理日志的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!