linux自動任務 刪除指定幾天前的檔案

2021-08-25 05:22:02 字數 1568 閱讀 3952

環境: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 後面緊跟的...