unix环境下,经常会遇到一种情况,就是存放日志的文件目录满了,需要进行清理。通常来说,日志文件具有一定的时效性,例如一周,超过一周的日志文件就可以进行清理(以应用日志为例,数据库ARCH日志,以是否备份完成为标准)。 在windows环境下,我们可以用图形界面,根据时间排序,然后用鼠标框选文件,然后按下delete键,多方便。可是在unix字符界面下,我们没有鼠标,没有框选,只能使用命令了,下面我们就介绍下如何通过命令简单快速的实现我们的需求。 首先,我们来假设一个应用场景: 接到文件系统使用率告警,目前主机dbaleading1上的/u01目录满了,需要进行清理。 接到这个case后,首先做理论分解,该怎么去思考。 1. 首先,/u01目录肯定有很多子目录,必须得先找到是哪些子目录占用了大部分的空间,如果要清理空间,肯定是清理占用空间多的。 2. 找到占用空间大的目录后,需要知道该目录中存放的是什么文件。 3. 根据文件,确定清理策略后(如保留7天,后缀为.log的应用过期日志文件),要根据策略,将需要清理的数据,筛选出来; 4. 对筛选出来的文件,进行清理。 理论分析清楚了以后,我们按照步骤,一步步来实现,过程很简单,重要的是,我们在日常运维中,特别是重要系统中做操作的时候,一定要知道自己做的是什么,会有什么样的影响,毕竟,我们是系统的最后一道防线。 1. 在windows下,我们可以点文件夹,右键,查看属性,就可以知道文件夹大小,在unix字符界面下,我们采用sort排序的方式,命令如下: [root@dbaleading1 ~]# cd /u01 [root@dbaleading1 u01]# du -sk * | sort -n 有关具体命令的作用,语法等等,可以用 man工具查看,如unix下输入 man du,就会出现du的命令手册。 2. 假设发现/u01/log目录占用空间比较大,则进入/u01/log目录,使用 ls -ltr命令查看该目录内的具体文件信息,如果仍然存在多个文件夹,则重复第一步。目前的场景,我们假设该目录中,存放了大量的应用日志文件,以.log结尾。 3. 发现大量应用日志占用空间,根据策略,我们需要把7天前的日志文件给删除了,这一步,我们使用find命令来实现,如下: [root@dbaleading1 ~]# find . -mtime +7 |xargs ls -lrt 在这个命令中,主命令是 find . -mtime +7 ,其意义是在当前目录中,寻找创建时间大于7天前的文件,管道命令|xargs ls -lrt的作用,是把这些文件按照时间顺序排列好,然后显示出来。 4. 如果第3步中的文件经过确认,可以删除的,那么,把管道命令中的ls命令替换成删除命令就可以了,如下: [root@dbaleading1 ~]# find . -mtime +7 |xargs rm -fr 5. 完成清理后,我们再通过命令 df -m ,进行复查,确认无误后,这个处理流程就全部完成了。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。