如何实现Linux tmp目录自动清理

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

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


  1. tmpwatch - removes files which haven’t been accessed for a period of time 
  2.  
  3. [root@DB-Server ~]# rpm -qa | grep tmpwatch 
  4.  
  5. tmpwatch-2.9.7-1.1.el5.5 
  6.  
  7. [root@DB-Server ~]# whereis tmpwatch 
  8.  
  9. tmpwatch: /usr/sbin/tmpwatch /usr/share/man/man8/tmpwatch.8.gz 
  10.  
  11. [root@DB-Server ~]# file /usr/sbin/tmpwatch 
  12.  
  13. /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 
  14.  
  15. [root@DB-Server ~]# 

`

关于tmpwatch命令的参数,不同版本可能有所不同,下面以Red Hat Enterprise Linux Server release 5.7下TMPWATCH(8)为列

作用:

删除一段时间没有被访问的文件。

参数:

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

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


  1. [root@DB-Server ~]# more /etc/cron.daily/tmpwatch 
  2.  
  3. flags=-umc 
  4.  
  5. /usr/sbin/tmpwatch "$flags" -x /tmp/.X11-unix -x /tmp/.XIM-unix \ 
  6.  
  7. -x /tmp/.font-unix -x /tmp/.ICE-unix -x /tmp/.Test-unix \ 
  8.  
  9. -X '/tmp/hsperfdata_*' 240 /tmp 
  10.  
  11. /usr/sbin/tmpwatch "$flags" 720 /var/tmp 
  12.  
  13. for d in /var/{cache/man,catman}/{cat?,X11R6/cat?,local/cat?}; do 
  14.  
  15. if [ -d "$d" ]; then 
  16.  
  17. /usr/sbin/tmpwatch "$flags" -f 720 "$d" 
  18.  
  19. fi 
  20.  
  21. done 
  22.  
  23. [root@DB-Server ~]# 

如果你想将强制删除30天没有访问的文件改为7天,只需"/usr/sbin/tmpwatch "$flags" 720 /var/tmp"和"/usr/sbin/tmpwatch "$flags" -f 720 "$d" 里面的720改为189即可。

作者:潇湘隐者

来源:51CTO

时间: 2024-08-02 12:39:14

如何实现Linux tmp目录自动清理的相关文章

Linux tmp目录自动清理总结

    在Linux系统中/tmp文件夹下的文件是会被清理.删除的,文件清理的规则是如何设定的呢? 以Redhat为例,这个主要是因为作业里面会调用tmpwatch命令删除那些一段时间没有访问的文件.   那么什么是tmpwatch呢?其实tmpwatch是一个命令或者说是一个包.如下所示 tmpwatch - removes files which haven't been accessed for a period of time [root@DB-Server ~]# rpm -qa |

linux中Zabbix自动清理历史数据脚本

随着时间增长监控的机器越来越多,其入库数据量也会越来越大,当数据量到一定时候的时候其反映速度会比较慢:于是我们就需要清理一些历史数据. #!/bin/bash   User="root"   Passwd="xxxxxx"   HIS_Date=`date -d $(date -d "-90 day" +%Y%m%d) +%s` #取90天之前的时间戳   TRE_Date=`date -d $(date -d "-365 day&qu

Linux下自动清理大量文件的方案探究

  定期清理过期文件和垃圾文件,维持文件系统合理的空间使用率,是一个系统管理员的日常工作.对于中小规模文件系统而言,简单的系统命令或者脚本都就可以实现;但是对于拥有数亿甚至数十亿数文件的大型.超大型文件系统,文件清理就变成一项艰巨的任务.如果确定哪些文件需要被清理,怎样清理大批量文件,怎样确保清理性能,都是系统管理员需要解决的难题.本文探讨了 Linux 下大批量文件自动清理的相关命令和方法,以及实际操作中的最佳实践. 文件自动清理的需求 系统管理员的手中,管理着企业最有价值的资产--数据;而占

inotify+rsync+mutt+msmtp实现linux文件或者目录自动更新

inotify+rsync+mutt+msmtp实现linux文件或者目录自动更新并且实现发邮件给管理员 实现文件实时同步,并且监控目录发送邮件给管理员 需求,需要一次性更新多台服务器,人工手动,时间较长. 并且实时监控发邮件到管理员邮箱里. 服务器架构图 更新源ip:192.168.0.110 服务器ip:192.168.0.185 192.168.0.185配置 首先安装rsync yum -y install rsync 然后等待 定义rsync配置文件/etc/rsyncd.conf 直

php中session定期自动清理的方法_php技巧

下文来为各位介绍PHP设置session定期自动清理的例子了,因为session默认是15分钟自动把变量给清除内存了,但有一些时间并不生效了,下面我们就来看看. 配置完成php后默认php会将session生成到/tmp目录下,导致/tmp目录文件很多,因此需要对session进行定期的清理. 修改php.ini: [root@hz scripts]# grep "session.save_path = " /usr/local/php/lib/php.ini ; session.sa

linux下oracle自动备份脚本

linux下oracle自动备份脚本  vi /home/oracle/backup.sh   //编写脚本 以下为脚本内容 time=` date +"%Y%m%d%H%M" ` //变量time 获取当前系统时间 su - oracle -c "exp hbskjt_0113/password owner=hbskjt_0113 file=/home/oracle/hbskjt_$time.dmp"  //导库脚本 cd /home/oracle tar zcv

XP系统如何设置自动清理Temp文件夹

XP系统如何设置自动清理Temp文件夹   自动清理方法: 1.在D盘建立D:UserDataTEMP目录 02.右击"我的电脑","属性","高级",打开"环境变量"对话框,将用户变量和系统变量都改为D:UserDataTEMP. 03.新建一个文本文档,在里面写入两行代码: RD %TEMP% /S/Q MKDIR %TEMP% 然后另存为*.bat格式(比如CleanTEMP.bat),这样只要打开一下CleanTEMP

linux查看目录大小及硬盘大小

  linux查看目录大小及硬盘大小的命令: # du -ks ---in all # du -k ---every last du和df命令都被用于获得文件系统大小的信息:df用于报告文件系统的总块数及剩余块数,du -s /用于报告文件系统使用的块数.但是,我们可以发现从df命令算出的文件系统使用块数的值与通过du命令得出的值是不一致的.如下例: # du -s /tmp 返回如下值: ---12920 /tmp 而 df /tmp返回如下值: Filesystem --512-blocks

Linux下开机自动挂载NTFS分区为可写

  自动挂载对于linux系统来讲就是安装硬盘了,今天我们来为各位介绍在Linux下开机自动挂载NTFS分区为可写技巧文章希望下文对各位有帮助. 升级到 OpenSUSE 13.2 之后,原来配置为可自动挂载并进行写入操作的 Windows NTFS 分区现在不会自动挂载了,在磁盘管理中配置了自动挂载且不勾选"Mount Read-Only"居然也无法直接写入.又折腾了好久才根据坎离枫整理的博文搞明白了. 要在 Windows + Linux 双系统中的 Linux 系统里使用 Win