我正在尝试将各种文件放入其中/tmp
,并且想知道删除它们的规则是什么?
我想象不同的发行版会有所不同,我对 Ubuntu 和 Fedora 桌面版本特别感兴趣。
但找到一个好的通用方法将是一件很棒的事情。
更好的办法是有一个通用的控制方法!(比如“每天凌晨 3 点,删除/tmp
超过 60 天的文件,但不要在重启时清除目录”)
答案1
这取决于你的发行版。在某些系统上,它仅在启动时被删除;其他系统有 cron 作业删除超过n小时。
在Debian及衍生品
- 在 Debian 中以及一般情况下,启动规则定义在
/etc/default/rcS
。
- 在 Debian 中以及一般情况下,启动规则定义在
在Ubuntu 15.10 及以上版本及其衍生物:使用
tmpfiles.d
。- 默认值
tmp.conf
仅在启动时清除/tmp
。 - 有关详细信息,请参阅这个答案。
- 默认值
在Ubuntu 15.04及之前:- 使用
tmpreaper
2- 它被调用
/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
。
- 用过的
- RHEL 7、8以及其他使用 SYSTEMD 的
在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/rcS
已TMPTIME
设置,它在上面初始化脚本中用于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 参数是要排除的文件。倒数第二个参数是上次访问后等待的时间。最后一个参数是要检查的目录。