tmpwatch(英文为:Temporary Watch)命令是 RHEL 系发行版下的临时文件清理工具。使用 tmpwatch 命令,能够根据临时文件的访问时间删除文件, 同时它还提供防止删除特定类型文件的机制。

在新版本的 RHEL 系发行版中可以使用 systemd-tmpfiles 工具删除临时文件。

本文将为你介绍 tmpwatch 命令的使用方法,使你对 tmpwatch 命令具有基本的了解,方便你删除临时文件。

系统安装指南

如下将给出如何在 RHEL / AlmaLinux / Rocky Linux 系统上安装 tmpwatch 命令:

# 更新软件源
sudo dnf update

# 安装 tmpwatch
sudo dnf install tmpwatch

tmpwatch 命令语法形式

tmpwatch [选项] 保留时间 目录...

语法内容解释说明:

  • [选项]:删除临时文件时,使用控制选项,用于控制删除行为
  • 时间:指定文件的保留时间(默认单位为:小时)
  • 目录:要清理的目录(可以同时指定多个目录)

tmpwatch 命令使用示例

1. 清理时指定文件的保留时间

如下示例给出清理 /tmp 目录下的文件的保留时间为 24小时内的文件:

tmpwatch 24 /tmp

2. 同时清理多个目录

如下命令将同时清理 /tmp/var/tmp 两个目录中 48 小时内的临时文件:

tmpwatch 48 /tmp /var/tmp

3. 测试删除操作

使用 -t 测试删除操作,测试时会在屏幕上输出该操作会删除的文件,但是不会实际删除这些文件:

tmpwatch -t 72 /var/log

如上命令输出文件的保留时间为 72 小时内的 /var/log 目录下的需要删除的文件。

4. 不被删除指定文件

使用 --exclude 选项,指定文件,当删除文件时,忽略掉该类文件:

tmpwatch 168 /backups --exclude '*.sql'

如上的示例将不删除以 .sql 结尾的文件

5. 按修改时间清理文件

使用 -m 选项,以文件的修改时间为参考删除文件:

tmpwatch -m 720 /archive

如上的示例会修改时间在 30 天前的文件

tmpwatch 命令选项详解

如下给出 tmpwatch 命令选项的详细解释说明:

选项 说明 参数示例
-a, --all 删除所有类型的文件 -a
-c, --ctime 基于文件状态变更时间删除文件 -c
-d, --nodirs 不删除目录 -d
-f, --force 强制删除只读文件 -f
-l, --nosymlinks 不删除符号链接 -l
-m, --mtime 基于修改时间删除文件 -m
-M, --dirmtime 基于目录修改时间删除目录 -M
-r, --recursive 递归的删除子目录当中的文件 -r
-t, --test 测试删除操作,输出需要删除的文件,而不实际删除文件 -t
-u, --atime 基于访问时间删除文件 -u
-U, --exclude-user=USER 不删除指定用户的文件 -U root
-v, --verbose 删除文件时输出详细信息 -v
-x, --exclude=PATH 不删除特定路径下的文件 -x '/tmp/important'
-X, --exclude-pattern=PATTERN 不删除匹配指定模式的文件 -X '*.pid'
--protect=COMMAND 不删除特定命令所需的文件 --protect 'docker'
--size=MIN[KMG] 只删除大于指定大小的文件 --size=10M

如下给出可用的时间格式说明:

  • 默认单位:小时,即不指定单位时使用的默认单位
  • 其他可用的单位:
    • h:小时(默认)
    • d:天(24小时)
    • w:周(7天)
    • m:月(30天)
    • y:年(365天)

结语

本文全面的介绍了 tmpwatch 的语法结构及其功能,并给出了 tmpwatch 命令的具体使用示例,相信你能够对 tmpwatch 命令有个基本的了解,并帮助你正确的使用 tmpwatch 删除临时文件。 tmpwatch 命令可以在 Linux 发行版和 FreeBSD 系统中使用,基本功能是相同的。