我们知道系统里面常常会有一些忘记删除的长时间不用而且确实没有用处的文件,如果不去处理,这些无用的文件会越来越多,浪费许多系统资源。在不知道文件名的情况下,很难去检查某一目录下到底是哪些文件长时间没有被访问,同时删除这些文件。我们今天就介绍一款非常实用的工具来完成这一工作————tmpwatch

tmpwatch 是什么

tmpwatch 能够循环地删除指定目录下指定时间内没有被访问的文件,这一命令常常用于清理临时文件目录,比如 /tmp 或者 /var/tmp 这类目录。

它只清除指定目录下的空目录、普通文件和符号链接文件,也不会影响其他目录,而且会避开那些属于root用户的系统相关关键文件的。

默认设置下,tmpwatch 命令依据文件的 atime (access time)而非 mtime (modify time)来删除文件。如果你想改变它的删除依据,可以在使用这个命令时加上你想修改的参数。

注意:千万不要在根目录底下运行 tmpwatch 或者 tmpreaper 命令,因为系统可没有任何机制阻止你在根目录下运行此命令。

怎样在 Linux 上安装 tmpwatch

各种 Linux 发行版本的安装命令都有些略微差别,具体的安装方法见下文。

如果你的 Linux 发行版本是 REHL/CentOS 6 的话,可以使用 yum 命令来安装 tmpwatch,示例如下:

$ sudo yum install -y tmpwatch

如果你使用的 Linux 发行版本是 Debian 或者 Ubuntu ,则需要使用 apt 或者 apt-get 命令来安装 Tmpreaper,示例如下:

$ sudo apt-get install tmpreaper

如果你使用的是 openSUSE,则应使用 zypper 命令安装 tmpwatch:

$ sudo zypper install -y tmpwatch

如果 Linux 发行版本是 Fedora,则应使用 dnf 命令安装 tmpwatch:

$ sudo dnf install -y tmpwatch

说明:在以 Debian 为基础的 Linux 系统,是用 tmpreaper 命令代替 tmpwatch 的,若你使用的系统是以 Debian 为基础的Linux 版本,则将下文的示例中的 tmpwatch 换为 tmpreaper 即可。

tmpwatch 命令的关键选项和参数

  • atime (File Last Access Time):文件最后一次被访问的时间;
  • mtime (File Last Modify Time):文件内容最后一次被修改的时间;
  • ctime (File Last Change Time):文件元数据最后一次被修改的时间,即文件相关属性被修改的时间,多数情况下 mtime 和 ctime 值相同,但是诸如文件所有者、权限、所属组这类不涉及内容的属性被修改时则只会影响 ctime;
  • dirmtime (Directory Last modification time):目录最后一次被修改的时间。

这些时间参数用来设置删除文件的条件阈值:

  • d:单位为天;
  • h:单位为小时;
  • m:单位为分钟;
  • s:单位为秒。

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

如前所述,tmpwatch 命令的默认选项是 atime,而默认的单位参数则是 h,所以如果你确实要按以小时为单位计算的访问时间来删除文件,那么你不用加任何特殊的选项或则参数后缀,可以直接是用这个命令。如下例所示,即为删除 /tmp 目录下过去5小时内没有被访问的文件:

# tmpwatch 5 /tmp

下面这个示例是删除 /home/daygeek/Downloads 目录下过去十小时内没有修改过内容的文件,注意,如果要按 mtime 来删除文件,需要在命令中加上 -m 的选项:

# tmpwatch -m 10 /home/daygeek/Downloads

删除以其他单位计算的某段时间内没有被访问的文件

如果你要以天为单位,则需要加上 d 的后缀,如下为删除30天内没有被访问的文件:

# tmpwatch 30d /home/daygeek/Downloads

删除一段时间内未被使用的所有文件

如果你想不仅仅删除普通文件、符号链接文件、空目录文件,而是想删除指定目录下某段时间内没有被访问的所有文件,则需要加上选项 -a,如下为删除指定目录下12小时未被修改内容的所有文件:

# tmpwatch -am 12 /tmp

将某些目录排除在删除操作外

如下命令可以让那些十小时内没有被修改过内容的目录不被删除:

# tmpwatch -am 10 --nodirs /home/daygeek/Downloads

将特定路径排除在删除操作外

下面的命令删除 /home/daygeek/Downloads 目录下所有十小时内没有修改内容的文件,但是 /home/daygeek/Downloads/Movies 路径下却不受影响,即该路径下十小时内没修改的文件也不会被删除:

# tmpwatch -am 10 --exclude=/home/daygeek/Downloads/Movies /home/daygeek/Downloads

将特定格式的文件排除在删除操作外

下面所示的命令为删除指定文件下的所有10小时内未被改动的文件,除了 pdf 格式的文件:

# tmpwatch -am 10 --exclude-pattern='*.pdf' /home/daygeek/Downloads

预演 tmpwatch 的效果

下面这条命令即是对 tmpwatch 的功能效果进行预演:

# tmpwatch -t 5h /home/daygeek/Downloads

tmpwatch 设置一个定时任务周期性地执行删除操作

要完成这个任务,会在 /etc/cron.daily/tmpreaper 目录下留下一个 cronjob 文件,这个文件是按照 /etc/timereaper.conf 的设定工作的,你可以按自己的需求设置它。

如下所示的设置,能在每天上午10点时删除指定目录下,十五天没被访问的文件:

# crontab -e

0 10 * * * /usr/sbin/tmpwatch 15d /home/daygeek/Downloads

关于 tmpwatch 命令的介绍就到这里了,希望本篇文章对各位读者能有帮助,关于这个命令,你如果还有什么疑问或者其他想法,欢迎留言讨论

良许个人微信

添加良许个人微信即送3套程序员必读资料

→ 精选技术资料共享

→ 高手如云交流社群


本公众号全部博文已整理成一个目录,请在公众号里回复「m」获取!

推荐阅读:

计算机网络基础知识总结

GitHub 标星 3w+,很全面的算法和数据结构知识

C++虽不会过时,但是真的难啊!

5T技术资源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,单片机,树莓派,等等。在公众号内回复「1024」,即可免费获取!!

c++如何获取文件时间_Linux下如何删除长时间不使用的旧文件?相关推荐

  1. c++:怎么将ctime时间转化为一个具体的秒数值_Linux下如何删除长时间不使用的旧文件?...

    我们知道系统里面常常会有一些忘记删除的长时间不用而且确实没有用处的文件,如果不去处理,这些无用的文件会越来越多,浪费许多系统资源.在不知道文件名的情况下,很难去检查某一目录下到底是哪些文件长时间没有被 ...

  2. Linux下如何删除长时间不使用的旧文件?

    生物信息学习的正确姿势 NGS系列文章包括NGS基础.高颜值在线绘图和分析.转录组分析 (Nature重磅综述|关于RNA-seq你想知道的全在这).ChIP-seq分析 (ChIP-seq基本分析流 ...

  3. 使用Python批量删除windows下特定目录的N天前的旧文件实战:Windows下批量删除旧文件、清除缓存文件、解救C盘、拒绝C盘爆炸

    使用Python批量删除windows下特定目录的N天前的旧文件实战:Windows下批量删除旧文件.清除缓存文件.解救C盘.拒绝C盘爆炸 目录

  4. mysql8.0 服务移除_Linux下彻底删除Mysql 8.0服务的方法

    观看本文前最好有一定的Linux命令基础,具体为centos7.3环境中清除使用yum安装的Mysql 卸载前请先关闭Mysql服务 service mysql stop 使用 rpm 命令的方式查看 ...

  5. linux删除del后缀文件,linux删除命令_linux下如何删除一个文件?

    关于linux的删除命令 先登录linux服务器. linux下的删除命令是 del吗 不是del.是rm:remove 移除的意思.rm的用法如下: 1.删除文件夹以及文件夹中的所有文件命令: rm ...

  6. laravel windows 下queue能长时间执行吗_后台执行超长时间任务解决方案

    php中文网最新课程 每日17点准时技术干货分享 解决的问题: ● 耗时较长 ● 各端无法调取相关任务进度进行反馈 ● 自定义任务过后反馈结果 ● 请教下,Laravel 如何让程序在后台执行超长时间 ...

  7. Linux下定时删除指定目下n天前的文件

    * 6 * * * find /root/home/zhang/* ctime 1-exec rm -rf {} \; 表示每天早上六点删除/root/home/zhang目录下一天前创建的所有文件, ...

  8. 【转】Linux下定时删除指定目下n天前的文件

    * 6 * * * find /root/home/zhang/* ctime 1 -exec rm -rf {} \; 表示每天早上六点删除/root/home/zhang目录下一天前创建的所有文件 ...

  9. shell脚本连接ftp推送文件夹_Linux下使用Shell脚本实现FTP自动上传和下载文件

    登录FTP实现下载文件功能 FTP服务器:192.168.0.199 FTP路径:/ftphome/data 本地路径:/local/data 将文件从FTP下载到本地的脚本如下: 批量下载脚本代码 ...

最新文章

  1. win10 php mysql_win10 下 apache php mysql 开发环境安装
  2. linux启动tomcat很久或者很慢Tomcat启动时卡在“INFO: Deploying web application directory ......”的解决方法...
  3. Python之Pandas:pandas.DataFrame.to_csv函数的简介、具体案例、使用方法详细攻略
  4. 嵌入式_makefile简单语法介绍
  5. Apache Hive JdbcStorageHandler 编程入门指南
  6. 山寨版 颈椎病治疗秘籍
  7. 树形结构 —— 并查集 —— 并查集的删除操作
  8. 【重难点】【Redis 02】Redis 的持久化、Redis 的主从复制和集群、哨兵
  9. TCP的流量控制和阻塞控制
  10. vuecli+axios的post请求传递参数异常
  11. 求解线性方程组(SVD,QR,Gauss,LU)
  12. TypeError: ‘RClass‘ object is not callable, TypeError: ‘CClass‘ object is not callable
  13. 数字图像处理实验之Matlab对图像的基本处理
  14. 编写USB鼠标驱动程序,并测试
  15. Android拉起拼多多
  16. Spring Cache使用Redisson分布式锁解决缓存击穿问题
  17. python开发PC端桌面应用
  18. ios严格检验身份证号码有效性
  19. java.net.UnknownHostException: master (HBase报错)
  20. ubuntu16.04 64位安装HTS-2.3(包括前端配置)【待更】

热门文章

  1. js 改变change方法_Linux 中改变主机名的 4 种方法 | Linux 中国
  2. 源码之HashMap
  3. Android友盟增量更新
  4. Javascript 对 CSS3 animation 动画的流程的简单控制
  5. Oracle 用数据泵导入导出数据
  6. 一步步部署SharePoint Workflow 2013
  7. spring配置异步执行
  8. 线性回归与多项式回归的区别,如何判断他们的使用场景
  9. 通过PRINT过程制作报表
  10. CF232C Doe Graphs