[Linux] Linux中/tmp目录下文件莫名丢失

0x0 前言

前段时间的一个项目需要调用tomcat,没在意这些就把tomcat布在了/tmp下,大概1-2周左右,发现tomcat中的主程序和其他目录丢失,导致tomcat起不来,查看系统日志和tomcat日志也没有看到什么特别的东西,后来问了前辈,他说/tmp下系统会自动删除文件,于是自己查了一些资料,总结下。

0x1 /tmp目录下自动清理删除

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

0x2 什么是tmpwatch

那么什么是tmpwatch呢?其实tmpwatch是一个命令或者说是一个包。如下所示

tmpwatch - removes files which haven’t been accessed for a period of
time

[root@ ~]# rpm -qa | grep tmpwatch
tmpwatch-2.9.7-1.1.el5.5
[root@ ~]# whereis tmpwatch
tmpwatch: /usr/sbin/tmpwatch /usr/share/man/man8/tmpwatch.8.gz
[root@ ~]# 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

0x3 关于 tmpwatch

命令作用
tmpwatch删除一段时间没有被访问的文件。

参数:

-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 不删除文件里的子目录,但是子目录里面的文件还是会被删除。

0x4 修改清理、删除时间

参数后加时间,默认是hours。也可以使用30d表示30天,但是有些版本只支持hours。
时间后是要检查的目录。可以多个目录用空格分开。如下所示表示720小小时~=30天。如下:

[root@~]#  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/tmp 
for d in /var/{cache/man,catman}/{cat?,X11R6/cat?,local/cat?}; do
     if [ -d "$d" ]; then
          /usr/sbin/tmpwatch "$flags" -f 720 "$d"
     fi 
done 
[root@~]#

如果你想将强制删除30天没有访问的文件改为7天,只需把

"/usr/sbin/tmpwatch "$flags" 720 /var/tmp" 
"/usr/sbin/tmpwatch  "$flags" -f 720 "$d"

里面的720修改为189即可。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值