继上次磁盘空间满了造成jenkins构建不稳定,因此需要清理磁盘空间删除n天之外的文件
首先,先查看磁盘空间:
df
命令用于显示目前在 Linux 系统上的文件系统磁盘使用情况统计
"df -h”以更易读的方式显示目前磁盘空间和使用情况。
"df -i” 以inode模式来显示磁盘使用情况。
"df -l”
local 限制列出的文件结构。
![](https://i-blog.csdnimg.cn/blog_migrate/fdf9dedf77d34f75b79f84bfdea36e07.png)
对比df -h和df -i:
在df -h 和df -i 显示使用率100%,基本解决方法都是删除文件。
df -h 是去删除比较大无用的文件-----------大文件占用大量的磁盘容量。
df -i 则去删除数量过多的小文件-----------过多的文件占用了大量的inode号。
手动删除n天之外的文件
命令:
find /home/admin/logs/csp -mtime +7 -name "*.log*" -exec rm {} \;
命令详解:
find:linux的查找命令,用户查找指定条件的文件;
/home/weblogic/rc-server-tomcat-8081/logs:想要进行清理的文件目录;
-mtime:标准语句写法;
+7:查找7天前的文件,这里用数字代表天数;
"*.log":希望查找的数据类型
"*.jpg"表示查找扩展名为jpg的所有文件,
"*"表示查找所有文件,这个可以灵活运用,举一反三;
-exec:固定写法;
rm:
用于删除一个文件或者目录
* -i 删除前逐一询问确认。
* -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
* -r 将目录及以下之档案亦逐一删除。
rm -rf:强制删除文件,包括目录及子目录或文件;
{} \; :固定写法,一对大括号+空格+\+;
自动清理n天之外文件
每次手动执行语句太麻烦,我们可以考虑编写shell脚本自动清理:
1.创建shell脚本(地址自定义,文件名自定义。本文讲解以地址:
/home/admin/
文件名:auto-del-7-days-txt.sh为例)
touch /home/admin/auto-del-7-days-txt.sh
2.编辑shell脚本
vi
auto-del-7-days-txt.sh
也可以把1和2合并成一个命令:
新建加编辑该脚本:
sudo vi
/home/admin/auto-del-7-days-txt.sh
![](https://i-blog.csdnimg.cn/blog_migrate/b3705b76035355057d11bc98b2347d2a.png)
将我们之前手动删除文件的命令粘到该shell脚本里
#!/bin/sh
find /home/admin/logs/csp -mtime +7 -name "*.log*" -exec rm {} \;
![](https://i-blog.csdnimg.cn/blog_migrate/f1707441243e36f229ed67c35d1017d1.png)
退出编辑模式(Esc)保存并退出(:wq)
3.给该shell脚本分配可运行权限
sudo chmod 755 auto-del-7-days-txt.sh
查看权限是否分配成功:
cd /home/admin
ls
![](https://i-blog.csdnimg.cn/blog_migrate/aaba2225b363df7559dc9a0c9810729f.png)
该文件变绿即为分配权限成功
4.计划任务
crontab -e 编辑crontab服务文件
将auto-del-7-days-txt.sh执行脚本加入到系统计划任务,到点自动执行
命令:
10 0 * * * /home/admin/auto-del-7-days-txt.sh >/dev/null 2>&1
解析:
10 0 * * *:
每天凌晨0点10分定期执行auto-del-7-days-txt.sh文件进行数据清理任务。
> /dev/null 2>&1:
当程序在你所指定的时间执行后,系统会发一封邮件给当前的用户,显示该程序执行的内容,若是你不希望收到这样的邮件,请在每一行空一格之后加上 > /dev/null 2>&1 即可
![](https://i-blog.csdnimg.cn/blog_migrate/9dc8b564c21582e660c08f28ab22fe94.png)
编辑完crontab文件后,提示
crontab: installing new crontab
官方文档解释:
新创建的 cron 任务,不会马上执行,至少要过 2 分钟后才可以,当然你可以重启 cron 来马上执行。
看该用户下的crontab服务是否创建成功, 用 crontab -l 命令
服务创建成功:
![](https://i-blog.csdnimg.cn/blog_migrate/8bf94173126df1fd772dd06842a816bb.png)
5.启动
crontab任务
一般启动服务用 /sbin/service crond start;
若是根用户的cron服务可以用 sudo service crond start
![](https://i-blog.csdnimg.cn/blog_migrate/d08794c682dbd3f73cf545a831f64117.png)
查看crontab任务的执行情况:
方法一、查看
crontab任务的执行状态:
service crond status
我在执行这个命令的时候出现了连接超时的情况:
上面已经加载启用了,到后面不知道问什么又
无法创建会话:连接超时
![](https://i-blog.csdnimg.cn/blog_migrate/b965fdd62eeb5b51be460923ef1844c8.png)
方法二、可以使用查看其执行日志的方式:
查看已经执行过的任务,
看 /var/log/cron这个文件就可以,可以用tail -f /var/log/cron查看
![](https://i-blog.csdnimg.cn/blog_migrate/6c96b4e6711be409b6a482d331053b65.png)
两种方式查看,一个提示成功,一个提示失败,我裂开了呀,看明天的执行结果吧,会持续更新。。。。。。