FreezeJ' Blog

Linux定时清理/tmp目录

2020-08-08

centos6

centos6使用cron和tmpwatch来清理tmp目录:
没有的需要手动安装:yum install tmpwatch.x86_64,安装成功会产生一个/etc/cron.daily/tmpwatch文件,用于定时清理/tmp目录,内容如下:

#! /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_*' -X '/tmp/.hdb*lock' -X '/tmp/.sapstartsrv*.log' \
        -X '/tmp/pymp-*' 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

可以看出centos6默认清理/tmp目录时间为10

centos7

centos7中有一个专门的目录存放配置文件:/usr/lib/tmpfiles.d/,原理基本相似,清理tmp目录的配置文件是tmp.conf,详情可以参考:centos7-tmpwatch

tmpwatch命令

tmpwatch工具从指定的目录中递归地搜索并删除指定的目录中一段时间未访问的文件(不止限应用于/tmp目录)。

参数说明:
-u, –atime 基于访问时间来删除文件,默认的。
-m, –mtime 基于修改时间来删除文件。
-c, –ctime 基于创建时间来删除文件,对于目录,基于mtime。
-M, –dirmtime 删除目录基于目录的修改时间而不是访问时间。
-a, –all 删除所有的文件类型,不只是普通文件,符号链接和目录。
-d, –nodirs 不尝试删除目录,即使是空目录。
-d, –nosymlinks 不尝试删除符号链接。
-f, –force 强制删除。
-q, –quiet 只报告错误信息。
-s, –fuser 使用fuser检测文件是否打开,没有占用再删除。默认不启用。
-t, –test 仅作测试,并不真的删除文件或目录。
-U, –exclude-user=user 不删除属于谁的文件。
-v, –verbose 打印详细信息。
-x, –exclude=path 排除路径,如果路径是一个目录,它包含的所有文件被排除了。如果路径不存在,它必须是一个绝对路径不包含符号链接。
-X, –exclude-pattern=pattern 排除某规则下的路径。

Tags: Linux