Kin*_*rog 23 cron shell-script timestamps rm files
我需要使用 3 个不同目录中的 cron 作业删除超过 3 天的文件。(这 3 个目录是父目录/a/b/c/1& /a/b/c/2& 的子目录/a/b/c/3)可以用 crontab 中的一行来完成吗?
Gra*_*eme 28
这很容易(尽管请注意,这需要超过 3 天前的修改时间,因为创建时间仅适用于使用特殊工具的某些文件系统):
find /a/b/c/1 /a/b/c/2 -type f -mtime +3 #-delete
Run Code Online (Sandbox Code Playgroud)
取出#的前-delete一旦你确定它就是找到你要删除的文件。
要让它由 cron 运行,我可能只需要创建一个可执行脚本(#!bin/sh在文件的第一行添加一个 shebang -并使其可执行chmod a+x),然后将它放在适当的cron目录中,例如/etc/cron.daily或/etc/cron.weekly。当然,前提是您不需要更具体的时间表并且这些目录存在于您的发行版中。
如下所述,该-delete选项find不是很便携。POSIX 兼容的方法是:
find /a/b/c/1 /a/b/c/2 -type f -mtime +3 #-exec rm {} +
Run Code Online (Sandbox Code Playgroud)
#当您确定您拥有正确的文件时,再次删除。
请注意,
-exec rm {} +具有竞争条件漏洞-delete(如果可用)没有。所以不要在其他人可写的目录上使用它。一些发现还可以-execdir缓解这些漏洞。
你会更好地使用 tmpwatch
tmpwatch recursively removes files which haven't been accessed for a given time. Normally, it's used to clean up directories which are used for temporary holding space such as /tmp.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
112834 次 |
| 最近记录: |