Shell-Script
用於刪除超過 3 天的文件的 Cron 作業
我需要使用 3 個不同目錄中的 cron 作業刪除超過 3 天的文件。(這 3 個目錄是父目錄
/a/b/c/1
&/a/b/c/2
&的子目錄/a/b/c/3
)這可以用 crontab 中的一行來完成嗎?
這很容易(儘管請注意,這是超過 3 天前的修改時間,因為創建時間僅在具有特殊工具的某些文件系統上可用):
find /a/b/c/1 /a/b/c/2 -type f -mtime +3 #-delete
一旦您確定它正在找到您要刪除的文件,請刪除之前
#
的。-delete
要讓它由 cron 執行,我可能只是創建一個可執行腳本(
#!bin/sh
在文件的第一行添加一個 shebang - 並使用 使其可執行chmod a+x
),然後將其放在適當的cron
目錄中,例如/etc/cron.daily
or/etc/cron.weekly
。當然,前提是您不需要更具體的時間表並且這些目錄存在於您的發行版中。更新
如下所述, 的
-delete
選項find
不是很便攜。與 POSIX 兼容的方法是:find /a/b/c/1 /a/b/c/2 -type f -mtime +3 #-exec rm {} +
#
當您確定您擁有正確的文件時,再次刪除。更新2
引用下面的Stéphane Chazelas 評論:
請注意,
-exec rm {} +
有競爭條件漏洞-delete
(如果可用)沒有。所以不要在其他人可寫的目錄上使用它。一些發現還具有-execdir
減輕這些漏洞的作用。