某天,我在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