什么时候/ tmp被清除?

我正在把各种文件放在/ tmp中,我想知道删除它们的规则是什么?

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

但是,一个很好的普遍的发现方式将是一件好事。

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

这取决于你的分布。 在某些系统上,只有在启动时才会被删除,其他的则有cronjobs在删除n个小时以前的项目。

  • 在类似Debian的系统上:启动时(规则在/etc/default/rcS中定义)。
  • 在类似RedHat的系统上:RHEL6是/etc/cron.daily/tmpwatch ; RHEL7和RedHat类似于systemd,它在/usr/lib/tmpfiles.d/tmp.confconfiguration,由systemd-tmpfiles-clean.service调用, systemd-tmpfiles-clean.service )。
  • 在Gentoo /etc/conf.d/bootmisc

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

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

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

在我使用的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 ,在上面的init脚本中使用TMPTIME来在其末尾提供两个find命令 – 基本上根据它们的时间(修改,更改,访问)控制文件删除。

在RHEL 6.2上,如果tmpwatch中的文件在10天内没有被访问,它们将被删除。

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

从Fedora 18开始,默认情况下/tmp被安装在tmpfs (即RAM)上,因此在closures时被擦除。

这个行为可以通过发出systemctl mask tmp.mount和reboot来禁用(并且可以通过发出systemctl mask tmp.mount和reboot来重新启用),然后/tmp将被挂载到/ filesystem,并且可以被/usr/lib/tmpfiles.d/tmp.conf设置。

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

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

  • 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

你可以修改这些variables(每个variables的用法也可以在那里find)

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