关于linux:tmpwatch命令清除旧文件

41次阅读

共计 2719 个字符,预计需要花费 7 分钟才能阅读完成。

咱们晓得零碎外面经常会有一些遗记删除的长时间不必而且的确没有用途的文件,如果不去解决,这些无用的文件会越来越多,节约许多系统资源。在不晓得文件名的状况下,很难去查看某一目录下到底是哪些文件长时间没有被拜访,同时删除这些文件。咱们明天就介绍一款十分实用的工具来实现这一工作————tmpwatch

tmpwatch 是什么

tmpwatch 可能循环地删除指定目录下指定工夫内没有被拜访的文件,这一命令经常用于清理长期文件目录,比方 /tmp 或者 /var/tmp 这类目录。

它只革除指定目录下的空目录、一般文件和符号链接文件,也不会影响其余目录,而且会避开那些属于 root 用户的零碎相干要害文件的。

默认设置下,tmpwatch 命令根据文件的 atime(access time)而非 mtime(modify time)来删除文件。如果你想扭转它的删除根据,能够在应用这个命令时加上你想批改的参数。

留神 :千万不要在根目录底下运行 tmpwatch 或者 tmpreaper 命令,因为零碎可没有任何机制阻止你在根目录下运行此命令。

怎么在 Linux 上装置 tmpwatch

各种 Linux 发行版本的装置命令都有些稍微差异,具体的装置办法见下文。

如果你的 Linux 发行版本是 REHL/CentOS 6 的话,能够应用 yum 命令来装置 tmpwatch,示例如下:

$ sudo yum install -y tmpwatch

如果你应用的 Linux 发行版本是 Debian 或者 Ubuntu,则须要应用 apt 或者 apt-get 命令来装置 Tmpreaper,示例如下:

$ sudo apt-get install tmpreaper

如果你应用的是 openSUSE,则应应用 zypper 命令装置 tmpwatch:

$ sudo zypper install -y tmpwatch

如果 Linux 发行版本是 Fedora,则应应用 dnf 命令装置 tmpwatch:

$ sudo dnf install -y tmpwatch

阐明 :在以 Debian 为根底的 Linux 零碎,是用 tmpreaper 命令代替 tmpwatch 的,若你应用的零碎是以 Debian 为根底的 Linux 版本,则将下文的示例中的 tmpwatch 换为 tmpreaper 即可。

tmpwatch 命令的要害选项和参数

  • atime (File Last Access Time):文件最初一次被拜访的工夫;
  • mtime (File Last Modify Time):文件内容最初一次被批改的工夫;
  • ctime (File Last Change Time):文件元数据最初一次被批改的工夫,即文件相干属性被批改的工夫,少数状况下 mtime 和 ctime 值雷同,然而诸如文件所有者、权限、所属组这类不波及内容的属性被批改时则只会影响 ctime;
  • dirmtime (Directory Last modification time):目录最初一次被批改的工夫。

这些工夫参数用来设置删除文件的条件阈值:

  • d:单位为天;
  • h:单位为小时;
  • m:单位为分钟;
  • s:单位为秒。

tmpwatch 命令删除一段时间内没有被拜访的文件

如前所述,tmpwatch 命令的默认选项是 atime,而默认的单位参数则是 h,所以如果你的确要按以小时为单位计算的拜访工夫来删除文件,那么你不必加任何非凡的选项或则参数后缀,能够间接是用这个命令。如下例所示,即为删除 /tmp 目录下过来 5 小时内没有被拜访的文件:

# tmpwatch 5 /tmp

上面这个示例是删除 /home/daygeek/Downloads 目录下过来十小时内没有批改过内容的文件,留神,如果要按 mtime 来删除文件,须要在命令中加上 -m 的选项:

# tmpwatch -m 10 /home/daygeek/Downloads

删除以其余单位计算的某段时间内没有被拜访的文件

如果你要以天为单位,则须要加上 d 的后缀,如下为删除 30 天内没有被拜访的文件:

# tmpwatch 30d /home/daygeek/Downloads

删除一段时间内未被应用的所有文件

如果你想不仅仅删除一般文件、符号链接文件、空目录文件,而是想删除指定目录下某段时间内没有被拜访的所有文件,则须要加上选项 -a,如下为删除指定目录下 12 小时未被批改内容的所有文件:

# tmpwatch -am 12 /tmp

将某些目录排除在删除操作外

如下命令能够让那些十小时内没有被批改过内容的目录不被删除:

# tmpwatch -am 10 --nodirs /home/daygeek/Downloads

将特定门路排除在删除操作外

上面的命令删除 /home/daygeek/Downloads 目录下所有十小时内没有批改内容的文件,然而 /home/daygeek/Downloads/Movies 门路下却不受影响,即该门路下十小时内没批改的文件也不会被删除:

# tmpwatch -am 10 --exclude=/home/daygeek/Downloads/Movies /home/daygeek/Downloads

将特定格局的文件排除在删除操作外

上面所示的命令为删除指定文件下的所有 10 小时内未被改变的文件,除了 pdf 格局的文件:

# tmpwatch -am 10 --exclude-pattern='*.pdf' /home/daygeek/Downloads

预演 tmpwatch 的成果

上面这条命令即是对 tmpwatch 的性能成果进行预演:

# tmpwatch -t 5h /home/daygeek/Downloads

tmpwatch 设置一个定时工作周期性地执行删除操作

要实现这个工作,会在 /etc/cron.daily/tmpreaper 目录下留下一个 cronjob 文件,这个文件是依照 /etc/timereaper.conf 的设定工作的,你能够按本人的需要设置它。

如下所示的设置,能在每天上午 10 点时删除指定目录下,十五天没被拜访的文件:

# crontab -e

0 10 * * * /usr/sbin/tmpwatch 15d /home/daygeek/Downloads

对于 tmpwatch 命令的介绍就到这里了,心愿本篇文章对各位读者能有帮忙,对于这个命令,你如果还有什么疑难或者其余想法,欢送留言探讨


最初,最近很多小伙伴找我要 Linux 学习路线图 ,于是我依据本人的教训,利用业余时间熬夜肝了一个月,整顿了一份电子书。无论你是面试还是自我晋升,置信都会对你有帮忙!

收费送给大家,只求大家金指给我点个赞!

电子书 | Linux 开发学习路线图

也心愿有小伙伴能退出我,把这份电子书做得更完满!

有播种?心愿老铁们来个三连击,给更多的人看到这篇文章

举荐浏览:

  • 干货 | 程序员进阶架构师必备资源免费送
  • 神器 | 反对搜寻的资源网站

正文完
 0