如果你使用过 Linux 系统,那么你一定知道 /tmp 目录,不过...如果你用的不多,可能就只是知道这个目录而已,不一定有机会深入了解它。
除此以外,还有一个 /var/tmp 目录,这看起来差不多。今天我们就来了解一下关于 /tmp 目录的相关内容,·以及它与 /var/tmp 目录的区别。
/tmp 目录是做什么用的?
tmp 是英文单词 temporary(临时)的简写,顾名思义,它用于存储临时文件,比如系统和应用程序所使用你的临时(短时间内所需要)的数据。大多数Linux 发行版都会预先配置为在每次系统重启后都清空 tmp 目录。
比如,我们在系统中安装软件的时候,安装程序会在 /tmp 目录中存放一些需要用到的临时文件。
再比如,在处理某些项目的时候,系统可能会将更改的文件临时存储在 /tmp 目录中,或者文件自动保存的版本也会存储在 /tmp 目录中。
总体来说,/tmp 目录用于存储一些临时文件,当这些文件不再需要的时候,就可以将其删除。
/tmp 与 /var/tmp 目录是一样的吗?
答案是否定的。/tmp 目录和 /var/tmp 目录有着显著的差异。尽管他们都是用于处理临时文件,但处理方式却是不同的。
总体来说,/tmp 目录用于存储短期临时文件,而 /var/tmp 目录用于存储长期临时文件。
具体来说:
持久性(Endurance):通常,存储在 /tmp 目录中的文件会在系统启动时删除,而 /var/tmp 中的文件不会被删除;
用户权限和系统范围(For user VS Systemwide):通常来讲,每个用户都可以访问 /tmp 目录中的文件,而 /var/tmp 中的文件大多是针对于特定用户的;
用法(Usage):这个是最关键的区别。/tmp 目录用于存储短时间内所需的文件,如安装软件包;而 /var/tmp 目录用于较长时间所需的文件,如系统备份或日志文件。
自动清理 tmp 目录
前文中我们提到过,对于大多数 Linux 发行版而言,当系统重启的时候会自动清理 /tmp 目录。
那既然这样的话,我们为什么还需要主动清理 /tmp 目录呢?因为你不会像使用 Windows 系统那样每天都会关机或者重启系统,有些 Linux 用户会持续数周、数月甚至数年都不会重启系统。
当然,并不是所有人都需要清理 /tmp 目录,只有当你的服务器磁盘空间不足的时候,才需要主动清理 /tmp 目录。
要自动清理 /tmp 目录,最关键的是需要首先明确要删除的内容,最好的办法是删除过去三天内未使用且不属于root用户的文件。
基于这个原则,我们可以使用如下命令:
sudo find /tmp -type f \( ! -user root \) -atime +3 -delete
但是上述命令还不能实现自动化。因此,我们需要创建一个 corn 作业来实现自动化。
sudo crontab -e
如果你第一次使用任务表(corn table),系统可能会让你选择文本编辑器。大家可根据各自习惯选择,比如 vim 或者 nano。
将如下内容粘贴在文件末尾:
0 0 * * * sudo find /tmp -type f ! -user root -atime +3 -delete
保存更改即可。