linux

tmp是什么文件?Linux系统清理/tmp/文件夹的原理

日期:2013/12/10 21:52:03来源: 绿色资源网整理

.tmp 文件大部分都是因为不正常关机、或死机后所留下的文件,这些临时的暂存盘,在你重新开机后,已经没有任何的用途,可以放心删除。大家在使用Windows操作系统的时候,可能会经常在C盘根目录发现一些后缀名为TMP的文件,还会在Windows目录里发现一个TEMP的目录,TMP文件是各种软件或系统产生的临时文件,也就是常说的垃圾文件。Windows产生的临时文件,本质上和虚拟内存没什么两样,只不过临时文件比虚拟内存更具有针对性,单独为某个程序服务而已。而它的专一性导致了许多新手对他望而生畏,不删占据空间,删了又怕导致程序无法运行。

Windows 在长年累月的使用之下,在 Windows\Temp 里一定会多出很多的「垃圾」,其实这 Temp 里的所有的文件、或文件夹都是可以删除的,有空不妨常常清理下这个 Temp 文件夹,但是要留意一下,我指的是删除 Temp 里的东西(Temp 文件夹还是保留的),不是要你把整个 Temp 连文件夹一起删掉。 当你在删除 Temp 里面的文件的时候,你可能会遇到「存取拒绝」的错误讯息,不要紧,这是很正常的。 

因为某些是目前的暂存盘,Windows还正在使用中,你跳过出现存取拒绝讯息的文件,继续删除其它的文件即可. 一般来说,你当前运行着大型的工具软件的时候,都不应该去碰临时文件,比如Photoshop会在处理图形时候产生巨大的临时文件,如果你认为这不是你创建的文件企图删除,可能会导致Photoshop死机。你当前没有运行程序的话,发现的临时文件都可以删除,以免它们天长日久堆积如山,占据磁盘空间还是小事,关键是它们又多又散乱,会给磁盘扫描整理带来时间上的无谓消耗,也可能会造成文件分配表混乱,导致文件交叉链接的错误。但是不能所有的临时文件都一概而论。 比如,C盘根目录的TEMP目录,是很多工具程序临时文件的指向目录,没有这个目录的话,临时文件无法创建,这些工具软件就很可能会出错,所以要删除的话,只应该清空里面的临时文件垃圾,而不能把TEMP这个目录都干掉了;Windows里通常也有一个TEMP文件,是系统默认的临时文件的放置地方,也不建议连目录都删除了,定期清空里面的垃圾即可。 

关于Linux系统清理/tmp/文件夹的原理

我们知道,在Linux系统中/tmp文件夹里面的文件会被清空,至于多长时间被清空,如何清空的,可能大家知识的就不多了。

在RHEL\CentOS\Fedora\系统中(本次实验是在RHEL6中进行的)
先来看看tmpwatch这个命令,他的作用就是删除一段时间内不使用的文件(removes files which haven’t been accessed for a period of time)。具体的用法就不多说了,有兴趣的自行研究。我们主要看看和这个命令相关的计划任务文件。
他就是/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目录的清理,下面的是针对其他目录的清理,就不说了。

我们就来看/usr/sbin/tmpwatch "$flags" 30d /var/tmp这一行,关键的是这个30d,就是30天的意思,这个就决定了30天清理/tmp下不访问的文件。如果说,你想一天一清理的话,就把这个30d改成1d。

但有个问题需要注意,如果你设置更短的时间来清理的话,比如说是30分钟、10秒等等,你可以在这个文件中设置,但你会发现重新电脑,他不清理/tmp文件夹里面的内容,这是为什么呢?这就是tmpwatch他所在的位置决定的,他的上层目录是/etc/cron.daily/,而这个目录是第天执行一次计划任务,所以说,你设置了比一天更短的时间,他就不起作用了。这下明白了吧。
 

所以结论是:在RHEL6中,系统自动清理/tmp文件夹的默认时限是30天

在Debian\Ubuntu系统中(Ubuntu10.10为实验环境)
在Ubuntu系统中,在/tmp文件夹里面的内容,每次开机都会被清空,如果不想让他自动清理的话,只需要更改rcS文件中的TMPTIME的值。
我们看如何来修改
sudo vi /etc/default/rcS

TMPTIME=0
修改成
TMPTIME=-1或者是无限大
改成这样的话,系统在重新启动的时候就不会清理你的/tmp目录了。
依些类推,如果说要限制多少时间来更改的话,就可以改成相应的数字(本人没有测试,我是这么理解的)

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

相关文章

相关下载

网友评论

我要评论...
没有更早的评论了
取消