RHEL和Ubuntu清理/tmp目录的机制

某天,我在Ubuntu的/tmp目录下呕了150+行代码,第二天兴高采烈开机打算继续往下写时,发现...文件消失了!
为了让这段代码死得明明白白,稍微看了下RHEL和Ubuntu是怎样自动清理/tmp目录的。

注: 除非文件真的一点都不重要,否则别放在/tmp目录下啊!

RHEL6

在RHEL6中,系统每天会自动检查/tmp目录下的文件,如果超过30天没有Access/Write/Modify(atime,ctime,mtime,取三个时间的最大值,如果这个最大值超过30天则删除)。
这是由一个Daily Cron Job来完成的,脚本在 /etc/cron.daily/tmpwatch 。

[root@host ~]# cat /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

脚本通过调用一个tmpwatch的程序来执行清理工作。

Ubuntu

Ubuntu则是默认每次开机都清理/tmp内的文件。(所以我中招了)
可以在/etc/default/rcS 中修改配置。

# delete files in /tmp during boot older than x days.
# '0' means always, -1 or 'infinite' disables the feature
#TMPTIME=0

开机时会调用脚本来清理,脚本文件在/etc/init/mounted-tmp.conf