前言
服务器上日志文件不断增加导致磁盘爆满,当然不仅限于日志文件,导致服务异常崩溃。
手动执行删除
当然,再删除文件之前,我们肯定要先排查是什么原因导致的。
磁盘空间占用情况
df [选项] [文件]
复制代码
-
第1列是代表文件系统对应的设备文件的路径名
-
第2列给出分区包含的数据块(1024字节)的数目
-
第3,4列分别表示已用的和可用的数据块数目
-
第5列表示空间使用的百分比
-
第 6 列表示文件系统的挂载点。
正常的使用在 df
后面加上一个 -h
选项就好了。
df -h
复制代码
输出显示的数字形式的’G’(千兆字节),”M”(兆字节)和”K”(千字节),增加阅读感。
然后看哪个目录被使用的百分比高,就前往那个目录寻找大文件。
显示目录或文件的大小
接下来使用一个新的命令:du
,可以显示目录或文件的大小。
[root@root /]# cd usr/software/
[root@root software]# du -hs
267M .
复制代码
-
-h或–human-readable 以K,M,G为单位,提高信息的可读性。
-
-s或–summarize 仅显示总计。
删除
找到某个文件大了就可以执行删除命令了。
- 删除文件命令:
find 对应目录 -path 忽略某个目录 -prune -name "文件名" -mtime +天数 -exec rm -rf {} \;
复制代码
- 实例
find /opt/app/log -path /opt/app/log/sal -prune -o -mtime +3 -name "*log*" -print > /opt/chimes/lastlog.log -exec rm -rf {} \;
复制代码
在/opt/app/log
目录中查找更改时间在3日以前的文件名中包含 log 的文件,但排除 /opt/app/log/sal 目录。
- path 查找的路径
- prune -o: 忽略某个目录,-prune -o 的顺序不 能调换
- mtime -n/+n 按文件更改时间来查找文件,-n指n天以内,+n指n天以前
- name fileName:查找名为 fileName 的文件
- print: find命令将匹配的文件输出到标准输出
- exec : 固定写法
- rm -rf:强制删除文件,包括目录
- {} ; :固定写法,
注意:{} 和 \; 之间有空格
定时任务
若是觉得每过几天就需要手动执行删除语句太麻烦了,可以将这语句写到一个可执行shell
脚本中,然后再创建一个 cron
调度任务,让系统帮你执行。
创建脚本文件
[root@root /]# cd /usr/local/bin/
[root@root bin]# vim clear.sh
复制代码
sh内容
#!/bin/sh
find /opt/app/log -path /opt/app/log/sal -prune -o -mtime +3 -name "*log*" -print > /opt/chimes/lastlog.log -exec rm {} \;
复制代码
然后保存退出:wq!
测试脚本是否可用
[root@root bin]# ./clear.sh
复制代码
没出现什么异常就是好的。
编写 cron 任务
[root@root bin]# crontab -e
0 0 * * * /usr/local/bin/clear.sh >> /usr/local/bin/clear.log
然后保存退出
wq!
复制代码
`0 0 * * * /usr/local/bin/clear.sh这段语句的意思是
每天凌晨0点0分执行clear.sh文件,进行数据清理任务。
查看脚本内容
[root@root bin]# crontab -l
0 0 * * * /usr/local/bin/clear.sh >> /usr/local/bin/clear.log
复制代码
- 如你对本文有疑问或本文有错误之处,欢迎评论留言指出。如觉得本文对你有所帮助,欢迎点赞和关注。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END