linux刪除之前的檔案日誌

2021-09-20 19:44:08 字數 2402 閱讀 3753

linux下每天都在產生log日誌檔案,如果不定期刪除,遲早擠爆硬碟,如果手動刪除,幾次可以,不是長久之計。這些事交給linux系統就可以解決。

試驗環境:

系統:centos 6.5 x64

測試路徑、測試檔名、測試時間(2017-06-05)

執行命令:

1

# find /root/text -mtime +3 -name "log.*" -exec rm -f {} \;

命令解釋:

find     查詢命令

/root/text  查詢路徑

-mtime     檔案最後修改時間

+3      3天前(或理解成從命令執行當前日期開始,當天不算,保留3個檔案)

-name    查詢方式為查詢檔案名

"log.*"    查詢log開頭後面為任意長度字元的檔案(不明白可以找「正規表示式」教程看看)

-exec     固定寫法

rm -f    符合條件的執行刪除並不提示

{}      固定寫法,注意左右有空格

\;      固定寫法,注意左右有空格

-mtime說明一下,linux中的檔案的時間屬性只有三個:

atime(access time)    檔案最後訪問時間。

mtime(modified time)    檔案最後修改時間。

ctime(change time)    檔案最後修改許可權時間。(比如執行過chmod)

用stat命令來看看檔案詳細資訊,find會找到檔案的modified時間作為引數。

有人注意到,檔名是06-01,但是顯示時間是06-05,怎麼回事。因為可以用"touch -d"命令來修改modified,現在將檔案修改回原來日期06-01。

1

2

3

# touch -d "21:55 06/01/2017" log.2017-06-01

# touch -d 06/01/2017 log.2017-06-01

上面命令第乙個是時間和日期都修改,下面那個是只修改日期。

另外也可以單獨修改時間或者月份,如下

以使用 am, pm 或是 24 小時的格式,日期可以使用其他格式如 6 may 2000 。 

1

2

3

touch-d"6:03pm"file

touch-d"05/06/2000"file

touch-d"6:03pm 05/06/2000"file

1

2

3

touch-d"2017-05-31 08:10:30"test.doc    同時修改檔案的修改時間和訪問時間

touch-m -d"2017-05-31 08:10:30"test.doc   只修改檔案的修改時間

touch-a -d"2017-05-31 08:10:30"test.doc   只修改檔案的訪問時間

上面find命令,寫好了我們加入系統自動執行。命令:

1

# crontab -e

開啟後和操作vi編輯軟體一樣(因為crontab預設就是用vi來編輯的)

# crontab -l

列出內容,定義凌晨2點執行。

參考文章:

簡單shell 刪除五日之前的日誌檔案

曾經在某公司面試的時候被問到了類似的問題。假設在logs資料夾存放了許多日誌檔案 比如 20190204.log 20190205.log 20190206.log。我們要刪除特定日期之前的日誌 在這裡展示的是使用shell指令中的find指令完成操作 首先看一下find指令的命令格式 find p...

自動刪除七天之前的日誌檔案

很多人在自己的專案中加入了日誌管理系統,有的是自己寫的,有的則是用的別人寫好的依賴庫,但是不是所有的依賴庫都能滿足我們的需求,這時候是不是要自己往上新增呢 背景,接手的專案裡面已經加好日誌管理了,但是沒有定期清理的功能,我看連兩年前的檔案都在,一天乙個txt檔案,雖然不大,但是量多啊,所以還是有必要...

linux 刪除指定日期之前的檔案

es沒有指定日誌時預設在var的log下面 用 edf cluster.log 這個來清空當前日誌檔案內容,且仍然保留檔名,只清空內容 兩種方法 1.在乙個目錄中保留最近三個月的檔案,三個月前的檔案自動刪除。find email v2 bak mtime 92 type f name mail 12...