linux下Tmpwatch命令实战

  • linux下Tmpwatch命令实战已关闭评论
  • 238 views
  • A+
所属分类:linux命令

安装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
  • 安卓客户端下载
  • 微信扫一扫
  • weinxin
  • 微信公众号
  • 微信公众号扫一扫
  • weinxin
avatar