環境:centos7.4 *64
邏輯思想:crontab+shell
示例
#!/bin/bash
find /office/work/logs/tomcat/ -mtime +7 -name "*" -exec rm -rf {} \;
find /office/work/logs/nginx/ -mtime +7 -name "*" -exec rm -rf {} \;
建好的shell別忘了增加許可權(chmod +x clearlog.sh)
[root@vm_16_12_centos shell]#crontab -e
……
1 1 * * * /home/shell/clearlog.sh
到此即可實現簡單的自動刪除日誌檔案任務;
下面對以上的指令碼和crontab做一些解析說明:
單點解析應該不用說了,完整的查詢刪除命令
find 目錄 -mtime +天數 -name 檔案正則 -exec 處理命令 {} \;
需要注意的是檔案正則需要用引號,末尾的{} \不需要引號(有一些帖子會說需要引號),並且{} \中間是需要有乙個空格的;
常見錯誤:
執行指令碼時會報錯缺失-exec引數或者找不到目錄或者檔案;
出現以上兩種錯誤時,除了檢查命令外,檢查下是否存在"\n\r"----這種情況會出現在win中編輯上傳至linux中,因為在win下編輯的時候,換行結尾是\n\r , 而在linux下 是\n,所以才會有 多出來的\r;
刪除\r命令如下
[root@vm_16_12_centos shell]# sed -i 's/\r$//' build.sh
crontab
結構規則
1 1 * * * /home/shell/clearlog.sh
[minute hour day month week command]
共計6位,前5位為時間規則,第6位為指令碼絕對路徑;
前5位時間規則:
crontab前面5位為:minute hour day month week command
其中:minute: 表示分鐘,可以是從0到59之間的任何整數。
hour:表示小時,可以是從0到23之間的任何整數。
day:表示日期,可以是從1到31之間的任何整數。
month:表示月份,可以是從1到12之間的任何整數。
week:表示星期幾,可以是從0到7之間的任何整數,這裡的0或7代表星期日。
檢視自動任務的執行日誌:
# 檢視自動任務的執行日誌
cat /var/log/cron
# 重啟crontab服務
service crond restart
# 檢視crontab服務狀態
service crond status
linux定時刪除前幾天日誌的定時任務
公司的應用伺服器用的是阿里雲,磁碟空間是250g,由於每天的日誌量差不多為30個g左右,所以做乙個日誌清理的計畫任務.現做一下日誌記錄.shell指令碼檔案dellog.sh bin sh time date t 構造查詢日誌字串 beginreg date d 1 day ago y m d fi...
自動建立計畫任務 刪除
forfiles p pathname m searchmask s c command d 描述 選擇乙個檔案 或一組檔案 並在那個檔案上 執行乙個命令。這有助於批處理作業。引數列表 p pathname 表示開始搜尋的路徑。預設資料夾是當前工作的 目錄 m searchmask 根據搜尋掩碼搜尋...
Linux 定時任務 刪除指定時間前的檔案
touch usr local bin clear img.sh注意,賦予許可權 chmod 777 clear img.sh 編輯clear img.sh檔案,在其中新增類似下面的 find tmp type f mmin 120 name jpg exec rm rf 解析 find 後面緊跟的...