- A+
安装Tmpwatch
大多数Linux发行版的默认存储库中都提供Tmpwatch。
在Fedora上,可以使用以下命令进行安装:
$ sudo dnf install tmpwatch
在 CentOS:
$ sudo yum install tmpwatch
在 openSUSE:
$ sudo zypper install tmpwatch
在Debian及其衍生版本(如Ubuntu)上,Tmpwatch的名称不同,即Tmpreaper。Tmpreaper主要基于Redhat 的Erik Troan的 `tmpwatch-1.2/1.4' 。现在,Paul Slootman为Debian维护了tmpreaper。
要在Debian,Ubuntu,Linux Mint上安装tmpreaper,请运行:
$ sudo apt install tmpreaper
使用Tmpwatch / Tmpreaper删除在给定时间内未访问的文件
Tmpwatch和Tmpreaper的用法几乎相同。如果您使用的是基于Debian的系统,请在以下示例中将“ Tmpwatch”替换为“ Tmpreaper”。
删除超过X天未访问的文件
要删除超过10天的文件,请运行:
tmpwatch 10d /var/log/
上面的命令将从/var/log/文件夹中删除超过10天未访问的所有文件和空目录。
删除超过X天未修改的文件
就像我已经说过的那样,Tmpwatch将根据文件的访问时间删除文件。您还可以使用-m选项根据文件的修改时间(mtime)删除文件。
例如,以下命令将删除/ var / log /文件夹中10天未修改的文件。
tmpwatch -m 10d /var/log/
在此,-m表示修改时间,d是<time_spec>参数。<time_spec>参数定义删除文件的年龄阈值。您可以使用以下time_spec参数删除文件。
- d –数天,
- h –几个小时,
- m –分钟
- s –秒。
小时是默认设置。
例如,要删除过去10个小时未修改的文件,只需运行:
tmpwatch -m 10 /var/log/
您可能已经注意到,我在上面的命令中没有使用过time_spec参数。因为h(代表小时)是默认参数,所以在删除过去X个小时未修改的文件时,我们不必提及它。
删除符号链接
如果要删除符号链接,而不仅仅是常规文件和目录,请使用-s选项,如下所示。
tmpwatch -s 10 /var/log/
删除所有文件
要删除所有文件类型,而不仅仅是常规文件,符号链接和目录,请使用-a选项。
tmpwatch -a 10 /var/log/
上面的命令将删除/ var / log /文件夹中的所有文件类型,包括常规文件,符号链接和目录。
从删除中排除目录
有时,您可能要删除文件,而不是目录。如果是这样,该命令将是:
tmpwatch -am 10 --nodirs /var/log/
上面的命令将删除除过去10个小时未修改的目录以外的所有文件。
执行测试运行,而无需实际删除任何内容
有时,您可能想查看实际上将要删除的文件。在重要目录上运行Tmpwatch时,这将很有帮助。如果是这样,请在带有-t选项的测试模式下运行Tmpwatch 。
tmpwatch -t 30 /var/log/
CentOS 7服务器的示例输出:
removing file /var/log/wtmp removing directory /var/log/ppp if empty removing directory /var/log/tuned if empty removing directory /var/log/anaconda if empty removing file /var/log/dmesg.old removing file /var/log/boot.log removing file /var/log/dnf.librepo.log
在基于Debian的系统上,您将看到类似以下的输出。
$ tmpreaper -t 30 /var/log/ (PID 1803) Pretending to clean up directory `/var/log/'. (PID 1804) Pretending to clean up directory `apache2'. Pretending to remove file `apache2/error.log'. Pretending to remove file `apache2/access.log'. Pretending to remove file `apache2/other_vhosts_access.log'. (PID 1804) Back from recursing down `apache2'. (PID 1804) Pretending to clean up directory `dbconfig-common'. Pretending to remove file `dbconfig-common/dbc.log'. (PID 1804) Back from recursing down `dbconfig-common'. (PID 1804) Pretending to clean up directory `dist-upgrade'. (PID 1804) Back from recursing down `dist-upgrade'. (PID 1804) Pretending to clean up directory `lxd'. (PID 1804) Back from recursing down `lxd'. Pretending to remove file `/var/log//cloud-init.log'. (PID 1804) Pretending to clean up directory `landscape'. Pretending to remove file `landscape/sysinfo.log'. (PID 1804) Back from recursing down `landscape'. [...]
这只会模拟操作,但实际上不会删除任何内容。Tmpwatch将仅执行试运行,并在输出中显示要删除的文件。
强制删除文件
如果要强制删除文件,请使用-f选项。
tmpwatch -f 10h /var/log/
通常,不会删除当前用户拥有的没有写访问权的文件。该-f选项将删除它们。
从删除中跳过某些文件
Tmpreaper可以选择跳过删除文件。当您要保留某些类型的文件并删除其他所有文件时,这将很有用。如果是这样,请使用如下所示的–protect选项。
tmpreaper --protect '*.txt' -t 10h /var/log/
此命令将删除所有扩展名为.txt的文件
结果:
(PID 2623) Pretending to clean up directory `/var/log/'. (PID 2624) Pretending to clean up directory `apache2'. Pretending to remove file `apache2/error.log'. Pretending to remove file `apache2/access.log'. Pretending to remove file `apache2/other_vhosts_access.log'. (PID 2624) Back from recursing down `apache2'. (PID 2624) Pretending to clean up directory `dbconfig-common'. Pretending to remove file `dbconfig-common/dbc.log'. (PID 2624) Back from recursing down `dbconfig-common'. (PID 2624) Pretending to clean up directory `dist-upgrade'. (PID 2624) Back from recursing down `dist-upgrade'. Pretending to remove empty directory `dist-upgrade'. Entry matching `--protect' pattern skipped. `ostechnix.txt' (PID 2624) Pretending to clean up directory `lxd'.
如您所见,Tmpreaper会跳过* .txt文件以将其删除。
顺便说一下,此选项在Tmpwatch中不可用。
设置cron作业以定期删除文件
您可能不想一直都手动运行Tmpwatch / Tmpreaper。在这种情况下,您可以设置cron作业以自动执行清理过程。
安装Tmpreaper时,它将创建一个日常cron作业(/etc/cron.daily/tmpreaper)。这项工作将从/etc/timereaper.conf文件中读取选项,并采取相应的措施。打开文件并根据需要更改值。默认情况下,Tmpreaper会删除7天之前的文件。但是,您可以通过修改tmpreaper.conf文件中的值“ TMPREAPER_TIME = 7d”来更改此设置。
如果使用“ Tmpwatch”,则需要手动创建cron作业并将cron条目放入其中。
# crontab -e
添加以下行:
0 1 * * * /usr/sbin/tmpwatch 30d /var/log/
根据上述cron作业,Tmpwatch每天凌晨1点运行,并删除30天之前的文件。
同样,在使用Tmpwatch / Tmpreaper命令时请小心。在运行该路径之前,请仔细检查该路径,以避免数据丢失。
有关更多详细信息,请参见手册页。
$ man tmpwatch
或者,
$ man tmpreaper
- 安卓客户端下载
- 微信扫一扫
- 微信公众号
- 微信公众号扫一扫