题 什么时候/ tmp被清除?


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

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

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

更好的是控制它的一般方法! (像'每天早上3点,删除任何一个 /tmp 超过60天的文件,但不要在重启时清除目录')


117
2018-04-06 15:09






答案:


这取决于你的分布。在某些系统上,它仅在启动时被删除,其他系统的cronjobs正在运行删除旧版本的项目 ñ 小时。

  • 在类似Debian的系统上:在启动时(规则定义于 /etc/default/rcS)。
  • 在类似RedHat的系统上:按年龄(RHEL6,它是 /etc/cron.daily/tmpwatch ; RHEL7和RedHat-like与systemd配置 /usr/lib/tmpfiles.d/tmp.conf,被称为 systemd-tmpfiles-clean.service)。
  • 在Gentoo上 /etc/conf.d/bootmisc

130
2018-04-06 15:12



并且无论何时发生这种情况,唯一安全的时刻通常是在启动后立即启动,因为运行进程可能会锁定文件,并且不应删除这些文件。 - adaptr
还有可用的包可以定期删除它们。 - Samuel Edwin Ward
在具有systemd(centos7 / rhel7)的类似RedHat的系统上,它在/usr/lib/tmpfiles.d/tmp.conf中配置。它由systemd的目标调用 systemd-tmpfiles-clean.service。 - Franklin Piat
在遗留的Debian上,您可以考虑 tmpreaper 包,它的分叉版本 tmpwatch。 - Věroš K.


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

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

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


23
2018-04-06 16:01



我在CentOS 7.4上没有这个。 - Kevin Lemaire
@KevinLemaire该功能已移至systemd服务中。 lists.centos.org/pipermail/centos/2014-October/147155.html - cjc


在我正在使用的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/rcS 你有 TMPTIME set,在上面的init脚本中使用它来提供两个 find 命令结束 - 基本上根据时间(修改,更改,访问)控制文件删除。


12
2018-04-06 15:31





在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参数是要排除的文件。倒数第二个参数是在上次访问时间之后等待的时间。最后一个参数是要检查的目录。


4
2018-05-29 21:31





从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 了解每个案例的更多细节。


4
2018-01-10 14:15





在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并导航到System - > / etc / sysconfig Editor - > System - > Cron

3
2017-11-15 13:45





更好的是控制它的一般方法! (类似'每天早上3点,删除任何超过60天的/ tmp文件,但不要在重新启动时清除目录')

您不想在启动时清除的sorta-tempy文件进入/ var / tmp

这是它的用途:-)


2
2018-04-07 05:01