/tmp下的文件会被操作系统清理吗?

/tmp下的文件会被操作系统清理吗?

我有一个生成日志文件的脚本,我将/tmp 其放在 Linux RedHat、Ubuntu、Solaris 和 AIX 上运行。

我想知道我是否必须自己定期清理日志(例如 14 天后)或者可能是操作系统自行清理它,因为它驻留在/tmp

答案1

如果您的操作系统没有自动清理 /tmp,请安装tmpreaper或者tmpwatch。它们可以设置为以 cronjobs 的形式运行,这样清理工作就可以自动完成。它们可以轻松配置,以遵循您对保留什么、清理什么以及何时清理的偏好。

在类似 Debian 的系统上,运行apt-get install tmpreaper。配置文件通常为/etc/tmpreaper.conf

如何确定其中一个是否已安装?一种方法是运行locate tmpreaperlocate tmpwatch查看结果。如果已安装,您可能需要检查其配置文件(在 下/etc/)。对于类似 Debian 的系统,必须手动更改为/etc/tmpreaper.conf以启用tmpreaper在 下运行cron

通常,每次重启时都会删除 中的所有文件。因此,只有运行时间较长的机器才需要/tmp这样的程序。tmpreaper

答案2

您可以检查df -T是否/tmp将其作为单独的文件系统挂载。如果不是,则很有可能不会自动清除。例如,在我的 CentOS 7.1 机器上,/tmp 只是根 (/) 文件系统的一部分,包含上次重启之前的旧文件。

在我的笔记本电脑上df -T显示:

文件系统类型 1K 块已使用可用使用率% 已安装于
dev devtmpfs 1912020 0 1912020 0%/dev
运行 tmpfs 1919840 1008 1918832 1% /运行
/dev/mapper/vg0-root ext4 118698260 89524160 23121444 80% /
tmpfs tmpfs 1919840 168044 1751796 9%/ dev / shm
tmpfs tmpfs 1919840 0 1919840 0%/sys/fs/cgroup
tmpfs tmpfs 4194304 168 4194136 1% /tmp
/dev/sda1 ext4 95054 59743 28143 68% /启动
tmpfs tmpfs 383968 104 383864 1%/运行/用户/1000

所有 tmpfs 都位于 RAM 中并在重启时被清除。

如果/tmp没有单独安装,您可以添加/etc/fstab如下条目:

tmpfs /tmp tmpfs nodev,nosuid,size=nG 0 0

这将创建一个 RAM 文件系统n大小为 GB。请确保输入的数字小于可用内存量。


作为替代方案用户3163621's,您只需放置一个像这样的 crontab 条目:

@reboot rm -rf /tmp/* /tmp/.*

答案3

Linux、ubuntu 和 Solaris 会在重启时清理 /tmp。但 AIX 不会,/tmp 中的文件会保留在那里。

您可以设置一个 cronjob 来以 root 身份为您执行此操作

0 1 * * * 查找 /tmp -atime -14 -exec rm {} \;

每天凌晨 1 点,它会查找并删除 14 天前最后访问的文件。或者您可以将 -mtime -14 设置为最后修改的文件。

相关内容