Solve Disk Space Occupancy Rate in Linux & Clear Docker logs
2023-09-11 14:16:16 时间
首选要查找占用大量磁盘空间的文件,基本是长久不清理的日志文件
-
du --exclude=/proc --total -sh /* | sort -hr
-
find / ! -path '/proc*' -size +200M -print
通过上面两台命令可以快速找出大文件,但是不能贸然删除日志文件,否则很可能出现删除文件后,空间仍然得不到释放
删除文件后,空间不释放的情况,很可能是文件被进程锁住,或者是有进程一直往文件写数据.
文件在Linux系统中分两部分:
- 指针部分:存在文件系统的meta-data中,执行rm删除后,指针就从meta-data中被清除了
- 数据部分:数据就是文件本身,当指针被从文件系统meta-data中清除后,数据部分被标记为可用,就可以覆盖,写入新数据了
删除日志文件后,空间得不到释放,就是由于进程还在占用文件,指针并没有从文件系统meta-data中清理掉
我们可以重启进程,甚至重启系统,但对于生产环境是绝对不行的
生产环境最安全的方式是
> file
:> file
echo '' > file
通过上面的方式,会释放占用的磁盘空间,也不会影响进程的继续执行
Experiment:
-
dd if=/dev/zero of=/root/uiop bs=1M count=2048
产生了一个2G的文件,Inode为136198
- 模拟占用文件
tail -F uiop
- 查看磁盘空间
df & du 统计会有一定差异
-
删除文件再次统计
du 统计的结果发生变化,但是df 仍然没变
lsof查看
inode号码是相同的
所以直接删除文件是危险的
下面是清空文件的方式结果
Docker
-
docker logs -f --since 30s container docker logs -f --tail 20 container : > $(docker inspect --format '{{.LogPath}}' container)
-
bash -c 'truncate -s 0 /var/lib/docker/containers/*/*-json.log'
- logrorate
/var/lib/docker/containers/*/*.log { rotate 7 daily compress missingok delaycompress copytruncate }
Once you have configured Logrotate for you Docker container you can test it with
logrotate -fv /etc/logrotate.d/docker-container
. You should get some output and a new log file with suffix[CONTAINER ID]-json.log.1
should be created. This file is compressed in next rotation cycle.
相关文章
- linux环境中,多个命令之间,通过&& ||执行,命令之间执行的逻辑是什么?
- 在CentOS/RHEL/Scientific Linux 6下安装 LAMP
- ttyrec & ttyplay - Linux记录播放终端会话
- Linux 有问必答: 如何在红帽系linux中编译Ixgbe驱动
- Linux bash受限的shell(RESTRICTED SHELL)
- Linux & Oracle 安装目录说明
- Linux 上传下载工具lrzsz
- 《循序渐进Linux(第2版) 基础知识 服务器搭建 系统管理 性能调优 虚拟化与集群应用》——4.3 文件管理与编辑
- linux Sersync 上配置客户端
- Linux常用命令大全
- Linux中 2>&1 的含义
- 《Linux嵌入式实时应用开发实战(原书第3版)》——第2章 安装Linux2.1 发行版
- elasticsearch linux安装及集成源码
- Linux shell 脚本中”2>&1″的含义解释
- linux禁用锁定和解除解锁用户账号的方法
- Linux_自动调整linux系统时间和时区与Internet时间同步
- [加入用户]解决useradd 用户后没有加入用户Home文件夹的情况,Linux改变文件或文件夹的訪问权限命令,linux改动用户password,usermod的ysuum安装包。飞
- linux一行命令查杀进程
- Windows&Linux文件目录监控
- Linux学习笔记(14)linux在6.x和7.x系列的安装与基本使用区别
- Linux Shell的 & 、&& 、 ||
- Linux Shell下”>/dev/null 2>&1“相关知识说明
- 15+ tar command usages with examples – Unix/Linux--reference
- Linux最大线程数限制