当前位置: 首页 > 科技观察

linux下如何删除很久不用的旧文件?

时间:2023-03-12 16:23:12 科技观察

我们知道,系统中经常会有一些文件很久没有删除,真的没什么用。如果不加以处理,这些无用的文件就会增多,浪费大量的系统资源。在不知道文件名的情况下,很难查看某个目录下有哪些文件长时间没有被访问,同时删除这些文件。今天我们就来介绍一个非常实用的工具来完成这项工作——tmpwatch什么是tmpwatch?tmpwatch可以循环删除指定目录下指定时间内没有访问过的文件。例如,/tmp或/var/tmp等目录。它只清除指定目录下的空目录、普通文件和符号链接文件,不会影响其他目录,而且会避开那些属于root用户的系统相关关键文件。默认情况下,tmpwatch命令根据文件的atime(访问时间)而不是mtime(修改时间)删除文件。如果你想改变它的删除依据,你可以在使用这个命令的时候添加你想修改的参数。注意:切勿在根目录下运行tmpwatch或tmpreaper命令,因为系统没有机制阻止您在根目录下运行此命令。如何在Linux上安装tmpwatch各个Linux发行版的安装命令略有不同,具体安装方法如下。如果你的Linux发行版是REHL/CentOS6,你可以使用yum命令来安装tmpwatch。示例如下:$sudoyuminstall-ytmpwatch如果您的Linux发行版是Debian或Ubuntu,您需要使用apt或apt-get命令安装Tmpreaper,示例如下:$sudoapt-getinstalltmpreaper如果您使用的是openSUSE,你应该使用zypper命令来安装tmpwatch:$sudozypperinstall-ytmpwatch如果你的Linux发行版是Fedora,你应该使用dnf命令来安装tmpwatch:$sudodnfinstall-ytmpwatch说明:在基于Debian的Linux系统中,使用tmpreaper命令而不是tmpwatch。如果您使用的系统是基于Debian的Linux版本,只需将下面示例中的tmpwatch替换为tmpreaper即可。tmpwatch命令关键选项及参数atime(FileLastAccessTime):文件最后一次被访问的时间;mtime(FileLastModifyTime):文件内容最后一次被修改的时间;ctime(FileLastChangeTime):文件元素上次修改数据的时间,即文件相关属性被修改的时间。大多数情况下,mtime和ctime的值是一样的,但是当文件所有者、权限、组等不涉及内容的属性被修改时,只会影响ctime;dirmtime(DirectoryLastmodificationtime):目录最后一次修改的时间。这些时间参数用于设置删除文件的条件阈值:d:单位为天;h:单位为小时;m:单位为分钟;s:单位是秒。使用tmpwatch命令删除一段时间内没有被访问过的文件前面提到过,tmpwatch命令的默认选项是atime,默认的单位参数是h,所以如果真的要按访问时间删除以小时文件计算,则不需要添加任何特殊选项或参数后缀,直接使用该命令即可。如下例所示,是删除/tmp目录下最近5小时没有访问过的文件:#tmpwatch5/tmp下面例子是删除/home/daygeek/Downloads目录下的文件在过去十小时内没有被修改。注意,如果要按照mtime删除文件,需要在命令中加上-m选项:#tmpwatch-m10/home/daygeek/Downloads删除在other计算的一定时间内没有被访问的文件units如果要用天为单位的话,需要加上d的后缀,如下删除30天内没有访问过的文件:#tmpwatch30d/home/daygeek/Downloads删除所有没有使用过的文件foraperiodoftime如果不仅要删除普通文件、符号链接文件、空目录文件,而且要删除指定目录下所有在一定时间内没有被访问过的文件,需要加上选项-a,如下删除指定目录下12小时内没有修改的所有文件:#tmpwatch-am12/tmp将某些目录排除在删除操作之外以下命令可以防止那些目录在十小时内没有修改几个小时后deleted:#tmpwatch-am10--exclude=/home/daygeek/Downloads/Movies/home/daygeek/Downloads排除特定路径对删除操作的影响,即该路径下十小时内未修改的文件将不会被删除:#tmpwatch-am10--exclude-pattern='*.pdf'/home/daygeek/Downloads将特定格式的文件从删除操作中排除如下所示的命令是删除所有10以内未更改的文件指定文件下的hours,pdf格式的文件除外:#tmpwatch-am10--exclude-pattern='*.pdf'/home/daygeek/Downloadspreviewtmpwatch下面命令的作用是预览tmpwatch的功能和效果:#tmpwatch-t5h/home/daygeek/Downloads用tmpwatch设置一个定时任务,定时执行删除操作,要完成这个任务,会在/etc/cro在n.daily/tmpreaper目录中留下了一个cronjob文件。该文件根据/etc/timereaper.conf中的设置工作。您可以根据需要进行设置,如下所示。可设置为每天10:00。删除指定目录下十五天未访问的文件:#crontab-e010***/usr/sbin/tmpwatch15d/home/daygeek/Downloadstmpwatch命令介绍到此结束。希望这篇文章能对各位读者有所帮助。如果你对这个命令有任何疑问或者其他想法,欢迎留言讨论。世界500强外企Linux开发工程师梁旭,在公众号分享大量Linux干货,欢迎关注!