专栏首页啸天"s blogtmp临时文件目录自动清理

tmp临时文件目录自动清理

Linux操作系统的/tmp目录保存临时文件,那么这个目录下的临时文件究竟会保存多久,何时被清理,通过什么方式(哪个服务)来维护清理工作呢?

手工清理

清理 /tmp 目录文件最简单和直接的方式是使用脚本命令清理N天前的临时文件(如果空间不足的话)

find /tmp -type f -mtime +5 -exec rm -f {} \;

清理5天前的文件。如果有程序不断写入/tmp目录下,则需要做轮转,这样才能使得文件的mtime保持确定时间,达到一定时间(如5天)被清理。 这个方法是应急处理,对于各个Linux发行版本,都有各自维护/tmp目录的设置方法

Red Hat / CentOS 和 tmpwatch

RHEL/CentOS 6使用tmpwatch维护临时文件删除

CentOS 6有一个tmpwatch默认会根据文件的最后访问时间atime来删除文件(不是根据mtime)。查看文件的atime可以通过 ls -u 来检查。

/etc/cron.daily/tmpwatch 脚本每天运行进行文件清理

#! /bin/sh
flags=-umc
/usr/sbin/tmpwatch "$flags" -x /tmp/.X11-unix -x /tmp/.XIM-unix \
    -x /tmp/.font-unix -x /tmp/.ICE-unix -x /tmp/.Test-unix \
    -X '/tmp/hsperfdata_*' 10d /tmp
/usr/sbin/tmpwatch "$flags" 30d /var/tmp
for d in /var/{cache/man,catman}/{cat?,X11R6/cat?,local/cat?}; do
    if [ -d "$d" ]; then
    /usr/sbin/tmpwatch "$flags" -f 30d "$d"
    fi
done

可以看到这个脚本默认保留 /tmp 目录下10天的文件,以及/var/tmp目录下30天文件;以及/var/{cache/man,catman}目录下30天文件。

参数:

  • -u 根据atime决定删除文件
  • -m 根据mtime决定删除文件
  • -c 根据ctime决定删促文件
  • 当同时结合使用 -umc 则表示是否删除文件取决于这3个时间点最大值

RHEL/CentOS 7使用systemd-tmpfiles-clean.timer服务维护临时文件删除

在 RHEL/CentOS 7种,有一个每日运行的systemd target称为 systemd-tmpfiles-clean.timer ,这是用来替代/etc/cron.daily/tmpwatch的。默认值是

OnBootSec=15min
OnUnitActiveSec=1d

检查:

sudo systemctl status systemd-tmpfiles-clean.timer

输出提示

● systemd-tmpfiles-clean.timer - Daily Cleanup of Temporary Directories
   Loaded: loaded (/usr/lib/systemd/system/systemd-tmpfiles-clean.timer; static; vendor preset: disabled)
   Active: active (waiting) since Fri 2016-07-29 10:17:19 CST; 2 months 1 days ago
     Docs: man:tmpfiles.d(5)
           man:systemd-tmpfiles(8)

可以使用如下命令检查

sudo journalctl -u systemd-tmpfiles-clean

由于没有定义时间,所以对于大型集群,这个清理时间是不固定的,这样整个集群清理时间可以错开。

/usr/lib/tmpfiles.d/tmp.conf 配置文件中定义了 systemd-tmpfiles-clean.service 的配置,注意其中会避开一些使用PrivateTmp=yes创建的名字空间挂载点:

# Clear tmp directories separately, to make them easier to override
v /tmp 1777 root root 10d
v /var/tmp 1777 root root 30d

# Exclude namespace mountpoints created with PrivateTmp=yes
x /tmp/systemd-private-%b-*
X /tmp/systemd-private-%b-*/tmp
x /var/tmp/systemd-private-%b-*
X /var/tmp/systemd-private-%b-*/tmp

可以看到对于/tmp目录,默认配置也是保留10天文件

按日轮转日志

对于/tmp目录下的日志文件可以通过自己简单的脚本进行轮转 - 思路:脚本在执行日志生成前,对比当前时间和文件的更改时间,如果跨日期(0点),则会出现当前时间的日期比文件上一次更改时间戳日

参考

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 仿站小工具 v3.0 仿站神器

    Erwin
  • Linux下常见的web运行环境和控制面板汇总

    宝塔 宝塔Linux面板是提升运维效率的服务器管理软件,支持一键LAMP/LNMP/集群/监控/网站/FTP/数据库/JAVA等100多项服务器管理功能。 有2...

    Erwin
  • kangle环境liunx一键安装脚本

    linux下easypanel版本安装及升级 (集成了kangle web 服务器和mysql,仅支持centos 5和centos 6) 执行下面的命令即可,...

    Erwin
  • Oracle函数和存储过程

    提莫队长
  • 【一天一大 lee】N皇后 II (难度:困难) - Day20201017

    n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。

    前端小书童
  • Leetcode Golang 70. Climbing Stairs.go

    版权声明:原创勿转 https://blog.csdn.net/anakinsun/arti...

    anakinsun
  • 如何用FPGA解一道初中数学题

    前几天和同事聊天,他说他上初中的儿子做出了一道很难的数学题,想考考我们这些大学生看能不能做得出来?

    单片机点灯小能手
  • 麻将算法

    麻将胡牌算法(不带赖子)(2天) 编码:(假设一副牌只有筒子 1表示1筒   2表示2筒。。。。 9表示9筒) 要求: 1)七对算法(判断14张牌是否是7对) ...

    Gxjun
  • 1078 字符串压缩与解压 (20 分)

    压缩的情况,我们根据前一个字符与当前字符进行对比,将相同且连续的字符进行计数,当出现第一个不相同的时候结束,并且同时对前一个字符进行输出。

    可爱见见
  • /tmp目录清理问题

    2019年7月10日 ⋅ 浏览量: 4    ...

    以谁为师

扫码关注云+社区

领取腾讯云代金券