Shell-Script

用於刪除超過 3 天的文件的 Cron 作業

  • February 14, 2017

我需要使用 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.dailyor /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減輕這些漏洞的作用。

引用自:https://unix.stackexchange.com/questions/136804