Linux磁盘空间爆满怎么办?定时文件清理脚本配置实现
在Linux系统上跑任务会遇到系统磁盘空间爆满的情况,表现出来的现象是程序运行报错,或执行缓慢。记录下Linux磁盘空间占用的查看方法和文件清理脚本定时触发配置的实现。
一、Linux磁盘空间占用分析
这边用df和du命令配合来查找占用磁盘空间的大头,找到文件目录之后,再根据文件类型决定是删除还是对磁盘扩容。
首先使用df -h命令查看磁盘整体的占用百分比和占用大小情况, 先确定是哪个文件夹占用较多,
~$ df -h
文件系统 容量 已用 可用 已用% 挂载点
udev 16G 0 16G 0% /dev
tmpfs 3.2G 11M 3.2G 1% /run
/dev/nvme0n1p2 234G 182G 40G 83% /
tmpfs 16G 0 16G 0% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 16G 0 16G 0% /sys/fs/cgroup
可以看到当前根目录占用83%,接着使用du命令继续查找占用大头的文件夹,du的–max-depth=1表示只展示第一个层级的目录和文件,sort的-h选项和du的-h选项一样,-r表示倒叙,默认升序。
~$ du -h / --max-depth=1 | sort -hr | head -n 10
186G /
161G /home
6.3G /usr
5.9G /var
4.3G /lib
4.0G /tmp
3.8G /snap
418M /opt
375M /boot
288M /bin
可以看出 /home目录占用大头, 接着继续查看/home目录下的文件占用:
~$ du -h /home --max-depth=1 | sort -hr | head -n 10
161G /home
150G /home/arc
4.0K /home/Systemback
~$ du -h /home/arc --max-depth=1 | sort -hr | head -n 10
150G /home/arc
90G /home/arc/lizr
27G /home/arc/WebstormProjects
8.7G /home/arc/arc-log
7.5G /home/arc/arc-resources
5.1G /home/arc/autoPressureLog
4.0G /home/arc/atf_runner
1.3G /home/arc/AtfCaseServer
524M /home/arc/.local
522M /home/arc/ArcCaseServer
~$ du -h /home/arc/lizr --max-depth=1 | sort -hr | head -n 10
90G /home/arc/lizr/master
90G /home/arc/lizr
4.0K /home/arc/lizr/protocol
~$ du -h /home/arc/lizr/master --max-depth=1 | sort -hr | head -n 10
90G /home/arc/lizr/master
45G /home/arc/lizr/master/atf_runner
44G /home/arc/lizr/master/atf_report
1.1G /home/arc/lizr/master/atf
108K /home/arc/lizr/master/atf_pre
20K /home/arc/lizr/master/atf_apk
现在可以知道是 atf_runner和atf_report占用最多,接着可以用ls -l查看这两个文件夹下面有哪些文件
~$ ls -l /home/arc/lizr/master/atf_report/
总用量 24772
drwxrwxr-x 4 arc arc 4096 3月 7 01:45 20210307_014457514410
drwxrwxr-x 4 arc arc 4096 3月 7 01:47 20210307_014601203246
drwxrwxr-x 4 arc arc 4096 3月 7 01:48 20210307_014736618057
drwxrwxr-x 4 arc arc 4096 3月 7 01:50 20210307_014900881721
....
~$ ls -l /home/arc/lizr/master/atf_runner/
比如这边查看在atf_report目录下有6193个报告文件,都是以日期命名的文件夹,有如下两种方式批量删除文件
1)用日期前缀删除较早的文件,例如把 20210307开头的文件夹都删除:
rm -rf /home/arc/lizr/master/atf_report/20210307*
2)保留最近5天的文件,5天之前的文件都清除,例如保留atf_report目录下最近5天的文件,超过5天的都删除,要保留不同的天数,配置不同的-mtime参数就行,也可以同时对删除的文件名做一个匹配过滤,这边配置‘*’不做过滤:
find /home/arc/lizr/master/atf_report/ -mtime +5 -name '*' -exec rm -rf {} \;
二、定时文件清理脚本配置实现
1、Jenkins配置定时触发
比较简便的方式是配置Jenkins,在项目里面加上清理文件的脚本,Jenkins执行流水线上加上脚本的执行,定时任务配置见: Jenkins时区配置及定时构建 。
2、Linux cron配置周期性触发
cron进程是Linux中的一个守护进程,一般用来执行系统中的周期性任务, 首先查看cron进程,/usr/sbin/ cron 就是当前运行的cron进程。
~$ ps -ef | grep cron
arc 2533299 2533276 0 00:23 pts/1 00:00:00 grep –color=auto cron
root 2591934 1 0 2月07 ? 00:00:05 /usr/sbin/ cron -f
如果cron进程不存在,用以下命令开启或停止。
# 开启服务
sudo service cron start
# 停止服务
sudo service cron stop
接着编辑crontab文件,crontab是UNIX系统下定期执行任务的触发器,要定期执行的任务都可以在这个文件里面配置,用以下命令打开文件,第一次使用这个命令会让你选择编辑器,选择vim比较方便
sudo crontab -e
加入要执行的脚本参数配置:
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').
#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h dom mon dow command
0 0 * * * /home/script/timer_cache_clean.sh
这边定时配置的语法和Jenkins定时触发构建是一样的,只是在5个时间参数后面加上要执行的命令。
* * * * * <command>
之后保存修改,退出文件编辑,重启cron就配置完成了。
sudo service cron restart
关于sh脚本里面清理文件的配置可以参考上面find -exec操作。
文章转载:陈文管的博客– https://www.chenwenguan.com/linux-space-analysis-and-timer-clean/
最后,特别推荐一个分享C/C++和算法的优质内容,学习交流,技术探讨,面试指导,简历修改...还有超多源码素材等学习资料,零基础的视频等着你!
还没关注的小伙伴,可以长按关注一下:
Linux磁盘空间爆满怎么办?定时文件清理脚本配置实现相关推荐
- linux 日志文件被占用下不来怎么办,linux 磁盘空间被占满但找不到目标文件的问题处理 lsof命令...
lsof简介 在终端下输入lsof即可显示系统打开的文件,因为 lsof 需要访问核心内存和各种文件,所以必须以 root 用户的身份运行它才能够充分地发挥其功能. 直接输入lsof部分输出为: 每行 ...
- linux磁盘空间df-h出不出来,linux 故障:df -h统计磁盘空间占用太多,但又du -h找不到大的文件...
用lsof / | grep -i delete 从根目录定位打开的被删除的文件 如果定位到某文件占用空间很大 主要是因为我们在删除这个日志文件的时候是用rm -rf *.log这样的命令删除的,删除 ...
- ets5怎么找到数据文件夹_mac怎么清理磁盘空间?如何找到并清理Mac电脑“其他”文件?...
相信大部分的Mac电脑用户都会有一个疑问,那就是"关于本机"中的那个"其他"类型到底是什么?为什么占据了那么大的磁盘空间,而在目前SSD固态硬盘空间有限的情况下 ...
- 使用硬盘空间少的linux系统,linux磁盘空间不足的解决办法
一些linux系统电脑用户在使用一些应用程序的时候,会被提醒:磁盘空间不足的问题,因此,就有网友想知道:linux查看磁盘空间的方法,以及linux磁盘空间不足的原因和解决方法.下面,就一起来看看今天 ...
- Docker-Overlay2磁盘空间爆满清理方法
Docker-Overlay2磁盘空间爆满清理方法 在日常线上环境中,我们通常会来做利用Docker来做容器化管理,通过运行容器来执行任务等.但是,随着业务量的不断增大,容器的不断启动,往往会出现磁盘 ...
- linux磁盘空间不足解决方法
原文链接:linux磁盘空间不足解决方法 一个之前运行好好的服务突然挂掉了,可能的原因有两个,一是磁盘满了,二是内存满了. 这里只介绍磁盘空间不足的解决办法 1.首先确定是否是磁盘空间不足 输入命令: ...
- vm虚拟机linux磁盘空间不足,手动扩大
vm虚拟机linux磁盘空间不足,手动扩大 随着Linux虚拟机的不断使用,在VMware中经常遇到 预先装好的 linux 虚拟机的硬盘空间过小 的问题,造成很多软件不能安装, 而重新装一个,又挺麻 ...
- linux磁盘空间不足,但是使用df却发现磁盘空间至少有一半的空间没有使用
linux磁盘空间不足,但是使用df -ah却看到还有近一半的空间,怎么会报磁盘空间不足呢? 其实很简单,因为node节点已经用完了,一个文件对应一个node节点,我们这里的说的空间其实是block, ...
- oracle指令df,怎么使用df命令查看Linux磁盘空间?
查看Linux磁盘空间的工具有很多,那么怎么使用命令来查看磁盘空间呢?那就要用到df命令了,下面小编给大家介绍下使用df命令查看Linux磁盘空间的方法. [root@localhost ~]# df ...
最新文章
- Vivado中用于时钟操作的几个Tcl命令
- Ubuntu快速截图
- java.security.InvalidKeyException:illegal Key Size
- 【测试点分析】1104 Sum of Number Segments (20 分)
- phpstorm-有关设置
- P1337-[JSOI2004]平衡点/吊打XXX【模拟退火】
- 【2018.3.10】模拟赛之三-ssl2576 平台
- python视频提取音频_python脚本实现mp4中的音频提取并保存在原目录
- 高性能反向代理软件HAProxy(一)之基本概念
- java关键字只static
- 全面理解 DNS 及 HTTPDNS
- PMP-5.组织结构类型
- UOJ #60 [UR #5] 怎样提高智商
- html 播放360全景图,讯网360全景展示产品-html5全景图-flash全景展示-360度全景图制作...
- 初始化NC用友的表结构数据文件
- 5个Python开发实用工具
- ISTP会议发表后多久能被检索收录!
- MacOS通过移动硬盘来安装Win TO GO
- 【BZOJ3039】玉蟾宫 单调栈
- c235delc杂合变异遗传吗_新生儿235delc杂合突变