站点图标 IDC铺

如何实现Linux tmp目录自动清理

在Linux系统中/tmp文件夹下的文件是会被清理、删除的,文件清理的规则是如何设定的呢? 以Redhat为例,这个主要是因为作业里面会调用tmpwatch命令删除那些一段时间没有访问的文件那么什么是tmpwatch呢?其实tmpwatch是一个命令或者说是一个包。

如下所示tmpwatch – removes files which haven’t been accessed for a period oftime[root@DB-Server ~]# rpm -qa | grep tmpwatch

tmpwatch-2.9.7-1.1.el5.5[root@DB-Server ~]# whereis tmpwatchtmpwatch: /usr/sbin/tmpwatch /usr/share/man/man8/tmpwatch.8.gz

[root@DB-Server ~]# file /usr/sbin/tmpwatch/usr/sbin/tmpwatch: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV),

for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped[root@DB-Server ~]#

`关于tmpwatch命令的参数,不同版本可能有所不同,下面以Red Hat Enterprise Linux Server release 5.7下TMPWATCH(8)为列作用:删除一段时间没有被访问的文件。

参数:-u 按照文件的最后access时间,即最后访问时间为参考默认选项可通过ls -lu查看-m 按照文件的最后modified时间,即最后修改时间为参考可通过ls -l查看-c 按照文件的-ctime时间做参考,ctime更新的条件为写入、更改属主、权限。

可通过ls -lc查看-M 按照目录的修改时间来删除目录而不是访问时间-a 删除所有类型文件包括目录和symbolic links-d –nodirs 排除目录文件,即使是空目录-d –nosysmlinks 排除symbolic links类型文件。

-f 强制删除那些root没有写权限的文件比如root的readonly文件-q 只报告错误信息-x /PATH 排除特定目录,即不删除该子目录里的文件-U user_name 排除属于特定用户的文件,即不删除该用户的文件。

-v 显示删除过程默认是不显示删除了什么文件,直接删除的-t 用于测试,并不真正删除文件,能显示出要删除文件的过程-d 不删除文件里的子目录,但是子目录里面的文件还是会被删除参数后加时间,默认是hours。

也可以使用30d表示30天,但是有些版本只支持hours 时间后是要检查的目录可以多个目录用空格分开如下所示表示720小小时~=30天[root@DB-Server ~]# more /etc/cron.daily/tmpwatch

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_* 240 /tmp/usr/sbin/tmpwatch “$flags” 720 /var/tmpfor d in /var/{cache/man,catman}/{cat?,X11R6/cat?,

local/cat?}; doif [ -d “$d” ]; then/usr/sbin/tmpwatch “$flags” -f 720 “$d”fidone[root@DB-Server ~]#如果你想将强制删除30天没有访问的文件改为7天,只需”/usr/sbin/tmpwatch “$flags” 720 /var/tmp”和”/usr/sbin/tmpwatch “$flags” -f 720 “$d” 里面的720改为189即可。

退出移动版