/ tmp什么时候清除?


142

我打算将各种文件放入/tmp,并且想知道删除它们的规则?

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

但是,找到一种不错的通用方法将是一件好事。

更好的控制方法是更好的一般方法!(类似于“每天凌晨3点,删除所有/tmp早于60天的文件,但不要在重新启动时清除目录”)


Answers:


155

那取决于你的分布。在某些系统上,仅在启动时才将其删除,而在其他系统上,则运行cronjobs来删除早于n小时的项目。

  • 在类似Debian的系统上:引导时(规则在中定义/etc/default/rcS)。
  • 在类似RedHat的系统上:按年龄/etc/cron.daily/tmpwatch划分(RHEL6是;使用systemd的RHEL7和RedHat类似,其配置在中/usr/lib/tmpfiles.d/tmp.conf,由调用systemd-tmpfiles-clean.service)。
  • 关于Gentoo /etc/conf.d/bootmisc

19
而且,无论何时发生这种情况,唯一安全的时刻通常是在挂载后立即启动,因为正在运行的进程可能已将文件锁定在那里,因此不应删除这些文件。
适配器

也有可以定期删除它们的软件包。
塞缪尔·埃德温·沃德

2
在具有systemd(centos7 / rhel7)的类似RedHat的系统上,它在/usr/lib/tmpfiles.d/tmp.conf中进行配置。被systemd的target调用systemd-tmpfiles-clean.service
富兰克林·皮亚特

1
在旧版Debian上,您可以考虑使用tmpreaperpackage,它是的分叉版本tmpwatch
VěrošK.

24

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

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

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


我在CentOS 7.4上没有此功能。
凯文·莱米尔

@KevinLemaire功能已移至系统服务中。 list.centos.org/pipermail/centos/2014-October/147155.html
cjc

如果找不到tmpwatch文件,则可以使用yum install tmpwatch
Ng Sek Long

我可以在其他发行版上获得tmpwatch吗?听起来很棒。我正在使用基于Debian的发行版
Jonathan,

sudo find /tmp -type f -atime +10 -delete会删除10天内未访问的tmp文件,请谨慎使用
Jonathan

13

在我正在使用的Ubuntu 11.10上,中有一个upstart脚本/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命令在其端部-基本上控制基于它们的倍文件删除(修改,改变,访问)。


5

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


5

从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-tmpfsman tmpfiles.d对每个案件的更多细节。


3

在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

2

更好的控制方法是更好的一般方法!(类似于“每天凌晨3点,删除所有早于60天的/ tmp文件,但不要在重新启动时清除目录”)

您不想在启动时清除的sorta-tempy文件位于/ var / tmp中

这就是它的目的:-)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.