tmpwatch自动清除文件学习
tmpwatch 删除给定时间未访问过的文件,通常用于清理临时存放空间 /tmp 的目录
更改目录时, tmpwatch 对可能的争用条件非常敏感, 如果检测到一个错误, 则会退出。它不遵循符号链接的目录, 它的清洁 (即使一个象征性的链接是作为其参数)
文件系统 (包括非琐碎的绑定装载), 跳过丢失的 + 找到根用户拥有的目录, 并且只删除空目录、常规文件、符号链接和某些系统也未使用的套接字。
默认情况下, tmpwatch 日期文件的 atime (访问时间), 而不是他们的 mtime (修改时间)。如果文件没有被删除时, 则暗示他们应该是, 使用 ls-你检查他们的 atime, 看看是否能解释问题。
如果 atime、-ctime 或–mtime 选项组合使用, 则删除文件的决定将基于这些时间的最大值。 dirmtime 选项意味着忽略 atime 的目录, 即使使用了-atime 选项。
时间参数定义了用于删除文件的阈值。 如果文件未被访问, 则会删除该文件。 时间参数是一个数字, 其中有一个可选的单字符后缀, 指定单位: m 为分钟, h 为小时, d 为天。
如果没有指定后缀, 时间则为小时,在此之后, 可以为 tmpwatch 提供一个或多个目录以进行清理。
tmpwatch command
-u, --atime 基于访问时间来删除文件,默认的。
-m, --mtime 基于修改时间来删除文件。
-c, --ctime 基于创建时间来删除文件,对于目录,基于mtime。
-M, --dirmtime 删除目录基于目录的修改时间而不是访问时间。
-a, --all 删除所有的文件类型,不只是普通文件,符号链接和目录。
-d, --nodirs 不尝试删除目录,即使是空目录。
-d, --nosymlinks 不尝试删除符号链接。
-f, --force 强制删除。
-q, --quiet 只报告错误信息。
-s, --fuser 如果文件已经是打开状态在删除前,尝试使用“定影”命令。默认不启用。
-t, --test 仅作测试,并不真的删除文件或目录。
-U, --exclude-user=user 不删除属于谁的文件。
-v, --verbose 打印详细信息。
-x, --exclude=path 排除路径,如果路径是一个目录,它包含的所有文件被排除了。如果路径不存在,它必须是一个绝对路径不包含符号链接。
-X, --exclude-pattern=pattern 排除某规则下的路径。
cat /etc/cron.daily/tmpwatch
#! /bin/sh
flags=-umc
/usr/sbin/tmpwatch "$flags" -x /tmp/.X11-unix -x /tmp/.XIM-unix \
-x /tmp/.font-unix -x /tmp/.ICE-unix -x /tmp/.Test-unix \
-X '/tmp/hsperfdata_*' 10d /tmp
/usr/sbin/tmpwatch "$flags" 30d /var/tmp
for d in /var/{cache/man,catman}/{cat?,X11R6/cat?,local/cat?}; do
if [ -d "$d" ]; then
/usr/sbin/tmpwatch "$flags" -f 30d "$d"
fi
done