09/25/13

Linux系统中/tmp文件夹

在Linux系统中/tmp文件夹里面的文件会被清空,至于多长时间被清空,如何清空的,可能大家知识的就不多了,所以,今天我们就来剖析一个这两个问题。

在RHEL\CentOS\Fedora\系统中(本次实验是在RHEL6中进行的)

1、tmpwatch,作用就是删除一段时间内不使用的文件(removes files which haven’t been accessed for a period of time)。
2、/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

 

分析一下:

第一行,相当于一个标记(参数)

第二行,就是针对/tmp目录里面排除的目录

第三行,对/tmp目录的清理,下面的是针对其他目录的清理。

3、/usr/sbin/tmpwatch “$flags” 30d /var/tmp这一行,关键的是这个30d,就是30天的意思,30天清理/tmp下不访问的文件。

如果说,你想一天一清理的话,就把这个30d改成1d。

4、需要注意,如果你设置更短的时间来清理的话,比如说是30分钟、10秒等等,你可以在这个文件中设置,但你会发现重启电脑,它不清理/tmp文件夹里面的内容。tmpwatch所在的位置决定的,上层目录是/etc/cron.daily/,这个目录是每天执行一次计划任务,所以说,你设置了比一天更短的时间,就不起作用了。
所以结论是:在RHEL6中,系统自动清理/tmp文件夹的默认时限是30天

5、在Debian\Ubuntu系统中(Ubuntu10.10为实验环境)

在Ubuntu系统中,在/tmp文件夹里面的内容,每次开机都会被清空,如果不想让他自动清理的话,只需要更改rcS文件中的TMPTIME的值。

sudo vi /etc/default/rcS

TMPTIME=0
修改成
TMPTIME=-1或者是无限大
改成这样的话,系统在重新启动的时候就不会清理你的/tmp目录了。

所以结论是:在Ubuntu中,系统自动清理/tmp文件夹的时限默认每次启动