不知道你是不是和我一样,一个程序员只需要将自己的电脑文件整理的井井有条,及时删除无用的文件就可以了?如果是的话,那我们就可以愉快的讨论下一篇文章的内容了。如果没有,你可以留下来凑热闹(>-<)。下面就是今天的主角——tmpwatch,它可以帮助我们递归删除给定时间内没有访问过的文件和空目录。当然,我们也可以使用find命令查找并删除超过x天未访问的文件,但是tmpwatch却可以一步到位,何乐而不为呢?默认情况下,tmpwatch根据文件或目录的访问时间来决定删除哪些文件或目录。此外,还可以根据inodechangetime(inodechangetime)和modificationtime(修改时间)进行操作。通常,tmpwatch用于删除/tmp目录中的文件,以及其他地方的其他无用文件,例如旧日志文件。重要警告!!不要在/(根目录)中运行tmpwatch!不要在/(根目录)中运行tmpwatch!!不要在/(根目录)中运行tmpwatch!!!(三则警告!^-^)/目录包含Linux系统运行所必需的重要文件,tmpwatch没有内置保护机制来防止在/目录上运行。那些重要的文件一旦被删除,后果不堪设想!所以小伙伴们在使用这个命令的时候一定要慎重!安装tmpwatch大多数Linux发行版的默认存储库中都提供了tmpwatch的安装:在Fedora上:$sudodninstalltmpwatch在CentOS上:$sudoyuminstaltmpwatch在openSUSE上:$sudozypperinstalltmpwatch在Debian及其衍生产品(例如Ubuntu)上,tmpwatch和称为tmpreaper:$sudoaptinstallltmpreaper使用tmpwatch/tmpreaper删除指定时间内没有访问过的文件tmpwatch和tmpreaper的用法几乎一样,可以认为是同一个命令。为了描述方便,本文以tmpwatch为例。使用基于Debian系统的朋友可以把下面的tmpwatch改成tmpreaper。1、删除超过X天未访问的文件示例:删除/var/log/文件夹中超过10天未访问的所有文件和空目录tmpwatch10d/var/log/2。删除超过X天未修改的文件默认情况下,tmpwatch根据访问时间删除文件,现在我们使用-m选项根据文件的修改时间删除文件。例:删除/var/log/文件夹下超过10天未修改的文件tmpwatch-m10d/var/log/d上面两条命令中的是一个时间参数,如下:d-daysh-hoursm-分钟s-秒默认时间参数是小时。如果要删除过去10小时内没有修改过的文件,可以写成如下形式:tmpwatch-m10/var/log/3。要删除符号链接,您可以使用-s选项删除符号链接:tmpwatch-s10/var/log/4。删除所有文件(包括常规文件、符号链接和目录)tmpwatch不仅可以删除普通文件,还可以删除一些特殊文件,如符号链接、目录、管道文件等。在这种情况下,您需要使用-a选项:tmpwatch-a10/var/log/5。删除时排除目录如果不想删除某个目录,可以使用--nodirs选项在删除时排除目录的删除:tmpwatch-am10--nodirs/var/log/6。测试删除(不要实际删除任何东西)再说一遍,删除重要目录上的文件时不要急于使用tmpwatch命令!不妨看一下命令运行后被删除的文件,不然删错了会伤脑筋的。.(养成好习惯!)可以使用-t进入测试模式:tmpwatch-t30/var/log/CentOS7输出:removingfile/var/log/wtmpremovingdirectory/var/log/pppifemptyremovingdirectory/var/log/tunedifemptyremovingdirectory/var/log/anacondaifemptyremovingfile/var/log/dmesg.oldremovingfile/var/log/boot.logremovingfile/var/log/dnf.librepo.log基于Debian的系统输出:$tmpreaper-t30/var/log/(PID1803)Pretendingtocleanupdirectory`/var/log/'.(PID1804)假装清除目录`apache2'.假装删除文件`apache2/error.log'.假装删除文件`apache2/access.log'.假装删除文件`apache2/other_vhosts_access.log'.(PID1804)从`apachecurs'退缩.(PID1804)假装清理目录`dbconfig-common'。假装移动文件`dbconfig-common/dbc.log'。(PID1804)从递归向下返回`dbconfig-common'。(PID1804)假装清理目录`dist-upgrade'。(PID1804)从递归向下返回`dist-升级'.(PID1804)Pretendingtocleanupdirectory`lxd'.(PID1804)Backfromrecursingdown`lxd'.Pretendingtom移动文件`/var/log//cloud-init.log'.(PID1804)Pretendingtocleanupdirectory`landscape'.Pretendingtomovefile`landscape/sysinfo.log'.(PID1804)Backfromrecursingdown`landscape'.[...]上面的过程其实不是没有真正删除文件,只是模拟删除,告诉你哪些文件会被删除。只有确保要删除的文件是正确的,才能去掉-t选项,然后执行tmpwatch进行真正的删除。7.强制删除tmpwatch默认情况下,它不会删除当前用户没有写权限的文件。但是如果你必须删除那些文件,你可以使用-f选项强制删除:tmpwatch-f10h/var/log/8。删除时跳过一些文件如果想在删除时保留指定的文件,也就是包括白名单,可以使用--protect选项。假设我们要保留所有txt类型的文件:tmpreaper--protect'*.txt'-t10h/var/log/输出结果:(PID2623)Pretendingtocleanupdirectory`/var/log/'.(PID2624)Pretendingtocleanupdirectory`apache2'。假装删除文件`apache2/error.log'。假装删除文件`apache2/access.log'。假装删除文件`apache2/other_vhosts_access.log'。(PID2624)/dbc.log'.(PID2624)从recursingdown返回`dbconfig-common'。(PID2624)Pretendingtocleanupdirectory`dist-upgrade'。(PID2624)从recursingdown返回`dist-upgrade'.Pretendingtoremoveemptydirectory`dist-upgrade'.Entrymatching`--protect'模式跳过。`ostechnix.txt'(PID2624)假装清理目录`lxd'。设置cronjob定时自动删除文件(偷偷告诉你,tmpwatch/tmpreaper和cronjob一起吃比较好。)进入cronjob任务编辑窗口:#crontab-e添加一个周期性任务:01***/usr/sbin/tmpwatch30d/var/log/上面的代码将tmpwatch设置为每天凌晨1点运行并删除超过30天的文件。不了解cornjob的朋友可以上网搜索它的新手指南。安装tmpreaper后,它会自动创建每日cron作业(/etc/cron.daily/Tmpreaper)。它从/etc/timereaper.conf文件中读取配置并执行它。默认设置是删除超过7天的文件,您可以通过修改TMPREAPER.conf文件中的“TMPREAPER_TIME=7d”来更改此设置。写在最后提醒大家,删除文件时一定要仔细检查路径,以免数据丢失。tmpwatch和tmpreaper手册页:$mantmpwatch$mantmpreaper
