Linux系统中的tmp是专门用于存储临时文件的目录,通常挂载在根目录下的/tmp路径,所有用户和程序都可以在该目录下创建、读写临时数据,系统重启后默认会自动清空该目录下的内容。

tmp目录的基本特性
tmp目录的权限设置比较特殊,所有用户都有读写执行的权限,这样做的目的是方便不同用户和进程都能临时存储数据,不需要额外的权限配置。可以通过下面的命令查看tmp目录的权限信息:
# 查看/tmp目录的权限和属性 ls -ld /tmp # 输出示例:drwxrwxrwt 10 root root 4096 某月 某日 某时 /tmp # 最后的t表示粘滞位,只有文件所有者、root用户才能删除该目录下的文件
tmp目录存储的内容
tmp目录中存放的内容主要是各类临时数据,常见的有以下几种:
- 程序运行时的临时缓存文件,比如解压安装包时产生的中间文件
- 进程运行时生成的临时数据,比如编辑器自动保存的临时备份文件
- 系统服务运行时产生的临时日志、socket文件等
- 用户手动创建的临时测试文件
tmp目录的文件可以删除吗
大部分情况下tmp目录下的文件是可以删除的,但需要注意区分场景:
可以删除的情况
如果是已经退出的程序留下的临时文件、用户自己创建的测试文件,或者存放时间很久的过期临时文件,都可以直接删除,不会影响系统正常运行。可以使用下面的命令清理tmp目录:
# 清理/tmp目录下7天前未被访问的文件 find /tmp -type f -atime +7 -delete # 清理/tmp目录下所有内容(谨慎使用) rm -rf /tmp/*
不建议删除的情况
如果有正在运行的程序正在使用tmp目录下的文件,此时删除文件可能会导致程序崩溃。比如正在运行的MySQL服务可能会在tmp目录下生成socket文件,删除该文件会导致无法连接数据库。可以通过lsof命令查看哪些文件正在被使用:
# 查看/tmp目录下被进程占用的文件 lsof +D /tmp
tmp目录的相关配置
tmp目录的清空规则可以通过systemd的tmpfiles配置来修改,默认的配置文件路径为/etc/tmpfiles.d/,用户可以自定义tmp目录的清理周期、保留时长等规则。比如下面的配置可以让系统在启动时清空tmp目录,并且保留最近1天的临时文件:
# 创建自定义tmp清理配置 cat > /etc/tmpfiles.d/tmp.conf << EOF d /tmp 1777 root root 1d EOF
需要注意的是,tmp目录默认是存储在磁盘中的,如果临时文件过多可能会占用大量磁盘空间,部分系统也会将tmp目录挂载为tmpfs内存文件系统,这样临时文件会直接存放在内存中,读写速度更快,重启后也会自动清空,不会占用磁盘空间。