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

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

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

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

评论

相关:askubuntu.com/questions/20783/…

#1 楼

这取决于您的分布。在某些系统上,仅在启动时才将其删除,其他系统则运行cronjobs来删除早于n小时的项目。 。 (该答案的积分)。
在Ubuntu 16上,使用tmpreaper。 (此答案的积分)。
在其他类似Debian的系统上:引导(规则在/etc/cron.daily中定义)。
在类似RedHat的系统上:按年龄划分(RHEL6是/etc/default/rcS; RHEL7 / RHEL8以及与reddat类似的systemd,它在/etc/tmpreaper.conf中配置,称为tmpfiles.d)。
在Gentoo /etc/default/rcS中。


评论


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

–适配器
2012年4月6日15:14

也有可以定期删除它们的软件包。

–塞缪尔·埃德温·沃德(Samuel Edwin Ward)
2012年4月6日在20:15

在具有systemd(centos7 / rhel7)的类似RedHat的系统上,它在/usr/lib/tmpfiles.d/tmp.conf中进行配置。它由systemd的目标systemd-tmpfiles-clean.service调用。

–富兰克林·皮亚特
15年3月13日在12:06

在旧版Debian上,您可以考虑使用tmpreaper软件包,它是tmpwatch的分叉版本。

–VěrošK.
17-10-12在9:37

Ubuntu 19.04:cat:/ etc / default / rcS:没有这样的文件或目录

–鲍里斯(Boris)
19-10-10在22:17

#2 楼

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

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

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

评论


我在CentOS 7.4上没有此功能。

–凯文·勒梅尔
18-2-15在11:06

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

– cjc
18年2月15日在15:30

如果找不到tmpwatch文件,则可以使用yum install tmpwatch下载tmpwatch。

–吴锡龙
18年11月12日在8:18

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

–乔纳森
19年5月14日在22:40

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

–乔纳森
19年5月14日在22:42

#3 楼

在我正在使用的Ubuntu 11.10上,/etc/init/mounted-tmp.conf中有一​​个upstart脚本。它的开头表示:

# 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清洗会在每次启动时运行。根据其时间(修改,更改,访问)删除文件。

#4 楼

在RHEL 6.2上,如果10天之内没有访问过,则tmpwatch会删除/ tmp中的文件。

文件/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设置进行控制。

有关更多信息,请参见http://fedoraproject.org/wiki/Features/tmp-on-tmpfs和/。每个案例的详细信息。

#6 楼

在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

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


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


#7 楼


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


您不想在启动时清除/ var / tmp

这就是它的作用:-)