如果您已经使用 Linux 一段时间,那么您一定遇到过 /tmp
目录。您可能对此有所了解,但您可能认为它不会重要。你还有可能知道有一个起来类似的 /var/tmp 目录。
因此,在教程中,我将向您说明您需要了解 Linux 的 /tmp
目录的重要信息。我们还将讨论它与 /var/tmp 目录的不同之处。
Linux /tmp 目录是什么
顾名思义,root 根目录下的 tmp(临时)目录用于存放系统和用户应用程序使用的数据,用来存放短时间内需要的数据。大多数 Linux 发行版都预先配置为在每次重新启动后清空 tmp 目录。
如果你还没理解,你可以想象这种情况。假设您正在给系统安装软件,安装程序在安装过程中可能会存储一些需要的文件。
同样,在处理项目时,您的系统可能会在进行更改时将文件存储在 tmp 目录,或者它们也可以是文件的自动保存版本。
简单的说,tmp 目录就是一个目录,用来存放临时需要的文件,不需要的时候可以删除。
/tmp 与 /var/tmp 区别
/tmp 与 /var/tmp 是不一样的, /tmp
目录和 /var/tmp
目录之间存在显着差异。简短的回答是他们如何处理临时文件。
/tmp
目录用于存储短期临时文件,而 /var/tmp
目录用于存储长期临时文件。
- Endurance:一般情况下,
/tmp
目录存放的文件在开机时会被删除,而/var/tmp
里面的文件在重启后仍会保留。 - 用户与系统:通常,每个用户都可以访问
/tmp
目录中的文件,而/var/tmp
的文件大多是特定于用户的。 - 用法(最关键的区别):
/tmp
目录用于存储短时间需要的文件,例如安装包。而/var/tmp
目录用于存储需要较长时间的文件,例如系统备份或日志文件。
自动清理 tmp 目录
正如之前所说,大多数发行版都会在您重新启动 Linux 系统时清理 /tmp 目录。
如果是这样,那么为什么还需要清理 /tmp 目录,因为您不会像家里的台式计算机那样每天重新启动服务器。它可能会运行数周,甚至数月和数年。
要自动清理 tmp 目录,最关键的是首先确定要删除的内容。所以最好的办法是删除最近三天未使用且不属于 root 用户的文件。
因此,您可以使用 find 命令搜索最近三天未使用且不属于 root 用户的文件,运行下面的命令:
sudo find /tmp -type f \( ! -user root \) -atime +3 -delete
我们已确定要删除的目标文件,现在,但这个过程不会自动化。因此,您必须创建一个 crontab 作业来自动运行 find命令并删除文件 。
首先,运行 sudo crontab -e
命令打开系统级别的 crontab:
sudo crontab -e
如果您是第一次使用 crontab,它会要求您选择您喜欢的文本编辑器。在本教程,我们推荐使用 vim,当然你也可以选择 nano。
[sudo] password for myfreax:
no crontab for root - using an empty one
Select an editor. To change later, run 'select-editor'.
1. /bin/nano <---- easiest
2. /usr/bin/vim.basic
3. /usr/bin/vim.tiny
4. /usr/bin/code
5. /bin/ed
Choose 1-5 [1]: 2
打开后,跳转转到文件末尾并将下面的行复制粘贴到文件:
0 0 * * * sudo find /tmp -type f ! -user root -atime +3 -delete
最后保存文件并退出 vim。
结论
至此,你已了解什么是 tmp 目录以及 /tmp 目录和 /var/tmp 目录的区别,学习如何在Linux 服务器清理 /tmp 目录的文件。如有任何疑问,请随时发表评论。