/tmp 什么时候清除?

Joh*_*den 184 linux unix cleanup tmp

我正在将各种文件放入/tmp,我想知道删除它们的规则?

我想象它对于不同的发行版是不同的,而且我对 Ubuntu 和 Fedora 桌面版本特别感兴趣。

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

更好的是控制它的一个很好的通用方法!(类似于“每天凌晨 3 点,删除任何/tmp超过 60 天的文件,但不要在重新启动时清除目录”)

kba*_*kba 192

这取决于你的分布。在某些系统上,它仅在启动时被删除,而其他系统则使用 cronjobs 运行删除超过n小时的项目。

  • 在 Ubuntu 14 上:使用tmpreaperwhich 被调用/etc/cron.daily,通过/etc/default/rcS和配置/etc/tmpreaper.conf。(归功于此答案)。
  • 在 Ubuntu 16 上:使用tmpfiles.d. (归功于此答案)。
  • 在其他类似 Debian 的系统上:启动时(规则在 中定义/etc/default/rcS)。
  • 在类似 RedHat 的系统上:按年龄(RHEL6 是/etc/cron.daily/tmpwatchRHEL7/RHEL8 和 RedHat-like with systemd 它配置在 中/usr/lib/tmpfiles.d/tmp.conf,由 调用systemd-tmpfiles-clean.service)。
  • 在 Gentoo 上/etc/conf.d/bootmisc

  • 无论何时发生这种情况,唯一安全的时刻通常是在启动时,即安装后,因为正在运行的进程可能会将文件锁定在那里,并且不应删除这些文件。 (22认同)
  • 在带有 systemd (centos7/rhel7) 的类似 RedHat 的系统上,它是在 /usr/lib/tmpfiles.d/tmp.conf 中配置的。它由 systemd 的目标“systemd-tmpfiles-clean.service”调用。 (3认同)
  • Ubuntu 19.04:`cat: /etc/default/rcS: 没有那个文件或目录` (2认同)

cjc*_*cjc 27

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

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

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


小智 16

在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)
Run Code Online (Sandbox Code Playgroud)

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

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


Ski*_*rou 7

从 Fedora 18 开始,默认/tmp安装在tmpfs(即 RAM)上,因此在断电时擦除。

此行为可以通过发出systemctl mask tmp.mount和重新启动来禁用(并通过发出systemctl unmask tmp.mount和重新启动重新启用),然后/tmp将安装在/文件系统上并可以通过/usr/lib/tmpfiles.d/tmp.conf设置进行控制。

请参阅http://fedoraproject.org/wiki/Features/tmp-on-tmpfs以及man tmpfiles.d有关每种情况的更多详细信息。


小智 6

在 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
Run Code Online (Sandbox Code Playgroud)

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


小智 5

在 openSUSE 13.2 上,可以使用 sysconfig 中的以下变量来控制清除行为。

  • MAX_DAYS_IN_TMP
  • MAX_DAYS_IN_LONG_TMP
  • TMP_DIRS_TO_CLEAR
  • LONG_TMP_DIRS_TO_CLEAR
  • OWNER_TO_KEEP_IN_TMP
  • CLEAR_TMP_DIRS_AT_BOOTUP

您可以通过以下方式修改这些变量(每个变量的用法也可以在那里找到)

  1. /etc/sysconfig/cron在命令行中手动编辑文件。
  2. 打开 Yast 并导航到系统 -> /etc/sysconfig 编辑器 -> 系统 -> Cron