# tmpwatch - 删除最近一段时间没有访问的文件
删除最近一段时间没有访问的文件,时间以小时为单位,节省磁盘空间。tmpwatch递归删除给定时间未被访问的文件。通常,它用于清理用于临时保存空间(如/tmp)的目录。当更改目录时,tmpwatch对可能的争用条件非常敏感,如果检测到错误,就会退出。它不遵循它正在清理的目录中的符号链接(即使给出一个符号链接作为它的参数),它不会切换文件系统,跳过根用户的lost+found目录,只删除空目录、常规文件和符号链接。
默认情况下,tmpwatch根据文件的atime(访问时间),而不是它们的Mtime(修改时间)来确定文件的日期。如果文件在ls-l
暗示应该删除时没有被移除,请使用ls-u
检查它们的数据,以确定这是否解释了问题的原因。
如果指定了--atime
,--ctime
或者--mtime
选项,那么删除文件的时间由他们中的最大值决定。如果--dirmtime
选项意味着忽略目录的atime,即使使用了—atime
选项。
我在 CentOS Linux 8 上测试 需要单独安装。
# 适用范围
RedHat
RHEL
Ubuntu
Debian
Deepin
SUSE
openSUSE
Fedora
Linux Mint
Alpine Linux
Arch Linux
# 语法
tmpwatch [选项] time file
tmpwatch [-u|-m|-c] [-MUadfqstvx] [--verbose] [--force] [--all] [--nodirs]
[--nosymlinks] [--test] [--fuser] [--quiet] [--atime|--mtime|--ctime]
[--dirmtime] [--exclude path] [--exclude-user user] time dirs
# 选项
-u, --atime # 根据文件的atime(访问时间)做出删除文件的决定。
# 请注意,定期更新的文件系统扫描使目录保持最近的状态。
-m, --mtime # 根据文件的Mtime(修改时间)而不是atime做出删除
# 文件的决定。
-c, -ctime # 根据文件的ctime(Inode Changing Time)而不是
# atime来决定删除文件;对于目录,根据mtime做出决定
-M, --dirmtime # 根据目录的Mtime(修改时间)而不是atime作出删除
# 目录的决定;完全忽略目录的atime
-a, -all # 删除所有文件类型,而不仅仅是常规文件、
# 符号链接和目录。
-d, --nodirs # 不要尝试删除目录,即使它们是空的。
-f, -force # 强制删除,即使root用户没有写的权利
-l, --nosymlinks # 不删除符号链接
-q, --quite # 只报告致命错误
-s, --fuser # 尝试在删除文件之前使用“fuser”命令查看文件是否已打开。
# 默认情况下未启用。在某些情况下确实有帮助,但不是全部。
# 依赖于/sbin中安装的fuser。不支持HPUX或Solaris
-t, --test # 不删除,只是演示要做什么
-U, --exclude-user=user # 不删除指定所有者的文件,可以指定用户名,也可以指定用户ID
-v, --verbose # 显示详细信息
-x, --exclude # 跳过目录及其内部文件,如果路径不存在,
# 则它必须是不包含符号链接的绝对路径。
-X --exclude-pattern=pattern # 跳过路径匹配模式;如果目录匹配模式,
# 则其中包含的所有文件也将被跳过。
# 模式必须匹配不包含符号链接的绝对路径。
# 举例
[sogrey@bogon 文档]$ ls
backup demos test test2.txt test3.txt test4.txt test.txt
[sogrey@bogon 文档]$ tmpwatch 1 . # 删除当前目录1小时内没有访问的文件
[sogrey@bogon 文档]$ tmpwatch -U root 1 . # 不删除root用户的文件