我有一个生成日志文件的脚本,我将/tmp
其放在 Linux RedHat、Ubuntu、Solaris 和 AIX 上运行。
我想知道我是否必须自己定期清理日志(例如 14 天后)或者可能是操作系统自行清理它,因为它驻留在/tmp
?
答案1
如果您的操作系统没有自动清理 /tmp,请安装tmpreaper
或者tmpwatch。它们可以设置为以 cronjobs 的形式运行,这样清理工作就可以自动完成。它们可以轻松配置,以遵循您对保留什么、清理什么以及何时清理的偏好。
在类似 Debian 的系统上,运行apt-get install tmpreaper
。配置文件通常为/etc/tmpreaper.conf
。
如何确定其中一个是否已安装?一种方法是运行locate tmpreaper
并locate 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 设置为最后修改的文件。