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环境变量中。
评论区