如何实现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
目录
相关文章
|
1天前
|
Ubuntu 应用服务中间件 Linux
蓝易云 - Linux学习之Ubuntu20中OpenResty的nginx目录里内容和配置文件
你可以根据你的需要修改这个配置文件,例如增加新的服务器块,位置块,修改监听的端口等。修改完配置文件后,你需要重载Nginx配置,可以使用 `/usr/local/openresty/nginx/sbin/nginx -s reload`命令来实现。
7 0
|
9天前
|
存储 数据挖掘 Linux
在 Linux 中查找目录中最大文件用什么,你知道吗
【5月更文挑战第23天】在 Linux 中查找目录中最大文件,可以使用 `du` 命令结合 `sort`,`find` 命令搭配 `xargs` 和 `sort`,或编写 Python 脚本。例如:`du -a /path | sort -nr | head -n 1` 或 `find /path -type f -print0 | xargs -0 du -h | sort -nr | head -n 1`。这些方法适用于服务器管理、数据分析和文件清理等场景,注意文件权限、目录深度和文件系统类型可能影响结果。
25 1
|
10天前
|
Linux C语言 Windows
linux基本指令总结--文件和目录(一)
linux基本指令总结--文件和目录(一)
|
12天前
|
存储 缓存 Linux
Linux 根目录下的目录都是什么作用
【5月更文挑战第17天】Linux 根目录下的目录都是什么作用
22 1
|
12天前
|
Linux
Linux 目录 rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d 是干什么的
【5月更文挑战第17天】Linux 目录 rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d 是干什么的
38 1
|
17天前
|
Ubuntu Linux Shell
mc实现目录同步并封装成Linux服务形式
mc实现目录同步并封装成Linux服务形式
262 1
|
17天前
|
Linux Shell
Linux操作系统下查找大文件或目录的技巧
Linux操作系统下查找大文件或目录的技巧
15 2
|
10天前
|
Shell Linux 程序员
【Linux】Shell 命令以及运行原理
【Linux】Shell 命令以及运行原理
|
2天前
|
Linux 应用服务中间件 nginx
linux小技巧: 可以补全命令 别名永久有效
linux小技巧: 可以补全命令 别名永久有效
|
2天前
|
缓存 关系型数据库 MySQL
linux 基本知识与命令
linux 基本知识与命令