侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux tmpwatch命令:如何自动清理临时文件(附实例教程和注意事项)

Linux tmpwatch命令介绍

tmpwatch是一个用于删除暂存文件的命令,它可以根据文件的访问时间、修改时间或目录的修改时间来判断文件是否过期。通常,它用于自动清理临时文件系统目录,例如/tmp和/var/tmp。它只会删除空目录、常规文件和符号链接。它不会切换到其他文件系统,并避开了属于根用户的lost+found目录。

Linux tmpwatch命令适用的Linux版本

tmpwatch命令可以在多种Linux发行版中使用,例如RHEL/CentOS、Debian/Ubuntu、openSUSE和Fedora。如果你的系统没有安装tmpwatch,你可以使用以下命令来安装它:

  • 对于RHEL/CentOS 6系统,请使用yum命令安装tmpwatch。
[linux@bashcommandnotfound.cn ~]$ sudo yum install -y tmpwatch
  • 对于Debian和Ubuntu系统,请使用apt命令或apt-get命令安装tmpreaper。
[linux@bashcommandnotfound.cn ~]$ sudo apt-get install tmpreaper
  • 对于openSUSE系统,请使用zypper命令安装tmpwatch。
[linux@bashcommandnotfound.cn ~]$ sudo zypper install -y tmpwatch
  • 对于Fedora系统,请使用dnf命令安装tmpwatch。
[linux@bashcommandnotfound.cn ~]$ sudo dnf install -y tmpwatch

请注意:如果你使用的是基于Debian的系统,请使用tmpreaper而不是tmpwatch。所有示例都可以如预期工作。

Linux tmpwatch命令的基本语法

tmpwatch命令的基本语法格式如下:

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

其中,[时间]是指定文件超期时间的参数,单位以小时计算。[目录...]是指定要清理的目录的参数,可以有多个。[选项]是指定一些额外的功能或行为的参数,可以有以下几种:

  • -a或--all:删除任何类型的文件。
  • -f或--force:强制删除文件或目录,其效果类似rm指令的"-f"参数。
  • -q或--quiet:不显示指令执行过程。
  • -v或--verbose:详细显示指令执行过程。
  • -t或--test:仅作测试,并不真的删除文件或目录。
  • -m或--mtime:根据文件的修改时间而不是访问时间来删除文件。
  • -c或--ctime:根据文件的更改时间而不是访问时间来删除文件。
  • -d或--dirmtime:根据目录的修改时间而不是访问时间来删除文件。
  • --nodirs:不删除目录,只删除文件和符号链接。
  • --exclude=路径:排除指定的路径,不删除其中的文件或目录。
  • --exclude-pattern=模式:排除符合指定模式的文件或目录,模式可以使用通配符或正则表达式。

Linux tmpwatch命令的常用选项说明

下表列出了tmpwatch命令的一些常用选项及其说明:

选项说明
-a删除任何类型的文件
-f强制删除文件或目录
-q不显示指令执行过程
-v详细显示指令执行过程
-t仅作测试,并不真的删除文件或目录
-m根据文件的修改时间而不是访问时间来删除文件
-c根据文件的更改时间而不是访问时间来删除文件
-d根据目录的修改时间而不是访问时间来删除文件
--nodirs不删除目录,只删除文件和符号链接
--exclude=路径排除指定的路径,不删除其中的文件或目录
--exclude-pattern=模式排除符合指定模式的文件或目录,模式可以使用通配符或正则表达式

Linux tmpwatch命令的实例

下面是一些使用tmpwatch命令的实例,展示了它的一些常见用法。

删除/tmp目录中超过一天未使用的文件

[linux@bashcommandnotfound.cn ~]$ tmpwatch 24 /tmp

这个命令会根据文件的访问时间来删除/tmp目录中超过24小时未使用的文件。

删除/home/daygeek/Downloads目录中超过10天未修改的文件

[linux@bashcommandnotfound.cn ~]$ tmpwatch -m 240 /home/daygeek/Downloads

这个命令会根据文件的修改时间来删除/home/daygeek/Downloads目录中超过240小时(即10天)未修改的文件。

删除所有类型的文件

[linux@bashcommandnotfound.cn ~]$ tmpwatch -a 12 /tmp

这个命令会删除/tmp目录中所有类型的文件,不管是常规文件、符号链接还是目录,只要它们超过12小时未被访问。

排除目录

[linux@bashcommandnotfound.cn ~]$ tmpwatch -a 10 --nodirs /home/daygeek/Downloads

这个命令会删除/home/daygeek/Downloads目录中超过10小时未被访问的文件和符号链接,但不会删除目录。

排除特定路径

[linux@bashcommandnotfound.cn ~]$ tmpwatch -a 10 --exclude=/home/daygeek/Downloads/Movies /home/daygeek/Downloads

这个命令会删除/home/daygeek/Downloads目录中超过10小时未被访问的所有类型的文件,除了/home/daygeek/Downloads/Movies目录及其子目录。

排除特定模式

[linux@bashcommandnotfound.cn ~]$ tmpwatch -a 10 --exclude-pattern='*.pdf' /home/daygeek/Downloads

这个命令会删除/home/daygeek/Downloads目录中超过10小时未被访问的所有类型的文件,除了以.pdf结尾的文件。

空运行

[linux@bashcommandnotfound.cn ~]$ tmpwatch -t 5h /home/daygeek/Downloads

这个命令会显示/home/daygeek/Downloads目录中超过5小时未被访问的文件,但不会真的删除它们。

设置cronjob来定期删除文件

[linux@bashcommandnotfound.cn ~]$ crontab -e
0 10 * * * /usr/sbin/tmpwatch 15d /home/daygeek/Downloads

这个命令会在每天上午10点删除/home/daygeek/Downloads目录中早于15天的文件。

Linux tmpwatch命令的注意事项

  • 请不要在/中运行tmpwatch或tmpreaper,因为该程序中没有防止这种情况的机制。
  • 如果你的系统使用systemd,你可以使用systemd-tmpfiles来管理临时文件,而不是tmpwatch或tmpreaper。
  • 如果你使用tmpwatch或tmpreaper删除文件,你可能无法恢复它们,除非你有备份。
  • 如果你在执行tmpwatch或tmpreaper时遇到bash: tmpwatch: command not found或bash: tmpreaper: command not found的错误,你需要安装相应的程序,或者检查它们是否在你的PATH环境变量中。
1

评论区