tmpwatch命令与tmp目录文件清除

原创
2016/03/23 00:35
阅读数 1.3K

之前遇到/tmp目录产生大量小文件,使用rm等均无法删除(”-bash: /bin/rm: Argument list too long“),这里关注下tmpwatch,系统为保证tmp目录不被撑爆,默认情况下每日会处理一次tmp目录文件,原理就是使用了tmpwatch。

功能:

tmpwatch命令用于删除暂存的临时文件,以节省磁盘空间。该命令的工作前提是将不常用的文件集中到一个目录中,然后利用该命令对该目录进行时间设置,这样tmpwatch命令将会自动检测该目录下的文件是否过期,若过期将自动删除。

:该命令需要root权限或同等权限,普通用户下会提示找不到命令

语法:

 

tmpwatch [-afqv][--test][超期时间][目录...]  

 

安装:

yum install tmpwatch

安装后会在/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_*' -X '/tmp/.hdb*lock' -X '/tmp/.sapstartsrv*.log' \

        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

可以看出tmpwatch会删除/tmp下超过240h不使用的文件,如果不想清除/tmp下文件,可以修改30d为0d(不推荐直接使用rm清理删除是因为可能会引起程序的僵死

执行tmpwatch指令可删除不必要的暂存文件,可以设置文件超期时间,单位以小时计算。

tmpwatch参数说明:

 

 

-u,--atime基于访问时间来删除文件,默认的。

-m,--mtime基于修改时间来删除文件。

-c,--ctime基于创建时间来删除文件,对于目录,基于mtime

-M,--dirmtime删除目录基于目录的修改时间而不是访问时间。

-a,--all删除所有的文件类型,不只是普通文件,符号链接和目录。

-d,--nodirs不尝试删除目录,即使是空目录。

-d,--nosymlinks不尝试删除符号链接。

-f,--force强制删除。

-q,--quiet只报告错误信息。

-s,--fuser如果文件已经是打开状态在删除前,尝试使用“定影”命令。默认不启用。

-t,--test仅作测试,并不真的删除文件或目录。

-U,--exclude-user=user不删除属于谁的文件。

-v,--verbose打印详细信息。

-x,--exclude=path排除路径,如果路径是一个目录,它包含的所有文件被排除了。如果路径不存在,它必须是一个绝对路径不包含符号链接。

-X,--exclude-pattern=pattern排除某规则下的路径。

 

强制删除超过3天未使用的所有文件

#tmpwatch -avf 72 /tmp/

:如果将mysql/php-fpm的pid和socket文件创建在/tmp下,要将对应的文件排除在外,否则mysql/php-fpm重启会出现问题。可通过-U mysql/-U www

 

展开阅读全文
打赏
1
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
1
分享
返回顶部
顶部