/tmp 什么时候被清除?

/tmp 什么时候被清除?

我正在尝试将各种文件放入其中/tmp,并且想知道删除它们的规则是什么?

我想象不同的发行版会有所不同,我对 Ubuntu 和 Fedora 桌面版本特别感兴趣。

但找到一个好的通用方法将是一件很棒的事情。

更好的办法是有一个通用的控制方法!(比如“每天凌晨 3 点,删除/tmp超过 60 天的文件,但不要在重启时清除目录”)

答案1

这取决于你的发行版。在某些系统上,它仅在启动时被删除;其他系统有 cron 作业删除超过n小时。

  • Debian及衍生品

    • 在 Debian 中以及一般情况下,启动规则定义在
      • /etc/default/rcS
  • Ubuntu 15.10 及以上版本及其衍生物:使用tmpfiles.d

    • 默认值tmp.conf仅在启动时清除/tmp
    • 有关详细信息,请参阅这个答案
  • Ubuntu 15.04及之前:- 使用tmpreaper2

    • 它被调用/etc/cron.daily
    • /etc/default/rcS通过和配置/etc/tmpreaper.conf。(感谢这个答案)。
  • 关于分布红帽及其衍生物:按年龄

    • RHEL 7、8以及其他使用 SYSTEMD 的
      • 通过配置/usr/lib/tmpfiles.d/tmp.conf
      • 被 调用systemd-tmpfiles-clean.service
    • 红帽企业版 6
      • 用过的/etc/cron.daily/tmpwatch
  • Gentoo

    • 用过的/etc/conf.d/bootmisc

答案2

在 CentOS(我假设是 Fedora)上,/etc/cron.daily 中有一个名为 的作业tmpwatch。它将运行/usr/sbin/tmpwatch,它将删除在指定小时内未访问的文件,即默认行为是检查atime文件的 以评估它是否最近被使用过。

http://linux.die.net/man/8/tmpwatch

其他发行版(和安装)可能将 /tmp 挂载为 tmpfs,这是一个内存文件系统。这将在启动时被清除。

答案3

在我使用的 Ubuntu 11.10 上,有一个暴发户脚本/etc/init/mounted-tmp.conf。它的开头是这样的:

# mounted-tmp - Clean /tmp directory
#
# Cleans up the /tmp directory when it does not exist as a temporary
# filesystem.

description "Clean /tmp directory"

start on (mounted MOUNTPOINT=/tmp) or (mounted MOUNTPOINT=/usr)

您可以阅读更多详细信息,但一般来说,它会在安装或挂载/tmp时进行清理。这通常会在启动时发生,因此每次启动时都会进行清理。/usr/tmp

/etc/default/rcSTMPTIME设置,它在上面初始化脚本中用于find在其末尾提供两个命令 - 基本上根据文件的时间(修改、更改、访问)控制文件删除。

答案4

在 RHEL 6.2 中,如果 10 天内没有访问 /tmp 中的文件,则 tmpwatch 会将其删除。

文件 /etc/cron.daily/tmpwatch 定义了调用 tmpwatch 的方式。

#! /bin/sh
flags=-umc
/usr/sbin/tmpwatch "$flags" -x /tmp/.X11-unix -x /tmp/.XIM-unix \
    -x /tmp/.font-unix -x /tmp/.ICE-unix -x /tmp/.Test-unix \
    -X '/tmp/hsperfdata_*' 10d /tmp

-x 参数是要排除的文件。倒数第二个参数是上次访问后等待的时间。最后一个参数是要检查的目录。

相关内容