centos7中根据文件大小排序以及jenkins配置每周删除一次jobs日志信息
发布日期:2021-05-07 04:26:14 浏览次数:25 分类:精选文章

本文共 4352 字,大约阅读时间需要 14 分钟。

环境

操作系统:win7

虚拟机:centos7

前言 预备知识

按照文件大小降序

du * -sh | sort -hr #h 表示以人可读的形式显示出来

按创建时间排序

ls -alc # 按创建时间排序

查看文件大小

du -sh # 查看文件大小

根据文件的创建时间(修改时间)排序升序,取前100条,并且指定匹配名称为数字的,并删除

rm -rf `ls -lc | head -n 100 | grep -w '[1-9]'`

查询时间段为2016年3月01号到2017年4月8号内的名称为数字的目录

find . -type d -newermt '01 Mar 2016' ! -newermt '08 Apr 2017' -print | grep -w '[1-9]*'

显示文件时,包含年月日

ls -l --time-style=full

–time-style参数:

full-iso 精确显示年月日时分秒纳秒及时区long-iso 显示年月日时分iso 默认就是iso,显示月日时分locale 按当前系统环境区域设置显示+Format 自定义格式显示

full-iso显示效果:

ls -l --time-style=full-isodrwxr-xr-x. 2 yutao yutao   6 2017-03-21 11:02:00.912981382 +0800 公共drwxr-xr-x. 2 yutao yutao   6 2017-03-21 11:02:00.911981382 +0800 模板drwxr-xr-x. 2 yutao yutao   6 2017-03-21 11:02:00.912981382 +0800 视频drwxr-xr-x. 2 yutao yutao   6 2017-03-21 11:02:00.912981382 +0800 图片drwxr-xr-x. 2 yutao yutao   6 2017-03-21 11:02:00.912981382 +0800 文档drwxr-xr-x. 2 yutao yutao 172 2017-04-05 18:51:58.592643038 +0800 下载drwxr-xr-x. 2 yutao yutao   6 2017-03-21 11:02:00.912981382 +0800 音乐drwxr-xr-x. 2 yutao yutao   6 2017-03-21 11:02:00.911981382 +0800 桌面

long-iso显示效果

ls -l --time-style=long-isodrwxr-xr-x. 2 yutao yutao   6 2017-03-21 11:02 公共drwxr-xr-x. 2 yutao yutao   6 2017-03-21 11:02 模板drwxr-xr-x. 2 yutao yutao   6 2017-03-21 11:02 视频drwxr-xr-x. 2 yutao yutao   6 2017-03-21 11:02 图片drwxr-xr-x. 2 yutao yutao   6 2017-03-21 11:02 文档drwxr-xr-x. 2 yutao yutao 172 2017-04-05 18:51 下载drwxr-xr-x. 2 yutao yutao   6 2017-03-21 11:02 音乐drwxr-xr-x. 2 yutao yutao   6 2017-03-21 11:02 桌面

自定义

ls -l --time-style="+%Y-%m-%d %H:%l:%S"drwxr-xr-x. 2 yutao yutao   6 2017-03-21 11:11:00 公共drwxr-xr-x. 2 yutao yutao   6 2017-03-21 11:11:00 模板drwxr-xr-x. 2 yutao yutao   6 2017-03-21 11:11:00 视频drwxr-xr-x. 2 yutao yutao   6 2017-03-21 11:11:00 图片drwxr-xr-x. 2 yutao yutao   6 2017-03-21 11:11:00 文档drwxr-xr-x. 2 yutao yutao 172 2017-04-05 18: 6:58 下载drwxr-xr-x. 2 yutao yutao   6 2017-03-21 11:11:00 音乐drwxr-xr-x. 2 yutao yutao   6 2017-03-21 11:11:00 桌面

查询7天前改动的文件夹,并列出详情、排序

[root@master01 builds]# find . -mtime +7 -type d -ls|sort435016    4 drwxr-xr-x   2 jenkins  jenkins      4096 Apr 10 16:42 ./456435045    4 drwxr-xr-x   2 jenkins  jenkins      4096 Apr 11 12:00 ./457435051    4 drwxr-xr-x   2 jenkins  jenkins      4096 Apr 11 13:56 ./458435062    4 drwxr-xr-x   2 jenkins  jenkins      4096 Apr 11 16:11 ./459

列举上面那些是为了以下需求做铺垫。

需求

最近jenkins出现没法构建的问题,点击立即构建没有反应。后来进入系统设置页面,看到提示,原来磁盘空间忙了。

1、首先我们需要知道构建的日志存在到哪里了?

2、公司要求,保留一周的记录。

查找jenkins的日志存放位置

由于当初我安装jenkins使用的是rpm进行安装。

所以查看安装路径的方法:

rpm -ql jenkins/etc/init.d/jenkins/etc/logrotate.d/jenkins/etc/sysconfig/jenkins/usr/lib/jenkins/usr/lib/jenkins/jenkins.war/usr/sbin/rcjenkins/var/cache/jenkins/var/lib/jenkins #存放的是构建时的日志/var/log/jenkins #jenkins 运行时是日志

所以,我们需要进入cd /var/lib/jenkins/jobs

这里写图片描述

这里面的每个文件夹就是我们配置的job构建后的日志存储的地方(里面的builds)

我们在jenkins中先新建一个job,专门用来执行删除日志的脚本。

这里写图片描述

这里写图片描述

这里写图片描述

====2018年3月6日=====start=====
上面这张图的定时有问题,不应该使用Poll SCM,而应该使用Build periodically
====2018年3月6日=====end=====

这里写图片描述


job配置好了后,我们就需要写脚本啦!

思路:
①先获取改动时间在7天前的文件。
②因为我们也需要知道,我们每次到底删除了哪些日志,所以我们还需要把删除的文件的时间显示到年月日。便于我们知道,删除的文件对不对。

查询改动时间为7天前的目录并列出详细信息时间精确到精确显示年月日时分秒纳秒及时区并写入到文件名为yutao中

以下命令执行的目录是:/var/lib/jenkins/jobs

# 因为我们要删除的是构建日志,所以需要查询每个`job`中`builds`路径中的日志find */builds/* -mtime +7 -type d| xargs ls -dl --full-time>yutao#find */builds/* -mtime +7 -type d| xargs ls -dl --full-time|sortdrwxr-xr-x 2 jenkins jenkins 4096 2016-10-18 10:31:47.305175960 +0800 ggblog-test/builds/38drwxr-xr-x 2 jenkins jenkins 4096 2016-10-18 10:36:06.165175675 +0800 ggblog-test/builds/39drwxr-xr-x 2 jenkins jenkins 4096 2016-10-18 10:40:07.867175411 +0800 ggblog-test/builds/40drwxr-xr-x 2 jenkins jenkins 4096 2016-10-18 10:47:29.561174927 +0800 ggblog-test/builds/41

上面的方法有个问题:

find */builds/* -mtime +7 -type d| xargs ls -dl --full-time|sort#即使find命令什么都没有查到,由于命令ls -d是显示当前目录的属性,所以它会显示为:drwxr-xr-x 51 jenkins jenkins 4096 2017-04-20 14:13:46.495914200 +0800 .

也就是说即使什么都没有查到,依然会显示当前目录..表示的就是当前目录。

当然我们要进行删除操作,只需要这样写:

rm -rf `find */builds/* -mtime +7 -type d`

但是,作为优秀的程序员,我们需要知道我们删除的文件详情。所以我们需要打印删除的文件详细。

完整脚本:

#!/bin/bashcd /var/lib/jenkins/jobsecho 'delete log start'files=`find */builds/* -mtime +7 -type d`deletelog=`find */builds/* -mtime +7 -type d | xargs ls -dl --full-time|sort|xargs|sed "s/drwxr/\n\rdrwxr/g"`if [ ! "$files" = "" ]thenecho '即将删除的文件:'echo ${deletelog}rm -rf ${files}elseecho '没有文件要删除'fiecho 'delete log end'

效果:

这里写图片描述

这里写图片描述

上一篇:linux shell脚本对未定义变量的判断以及if的用法
下一篇:java代码通过ssh免密操作远程服务器shell

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2025年04月16日 22时56分33秒