Linux之/dev/sda占用100%清理

0 背景

开发过程中,发现服务器/dev/sda6占满了,如下

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            126G     0  126G   0% /dev
tmpfs            26G  2.6G   23G  11% /run
/dev/sda6       160G  152G   54M 100% /
tmpfs           126G  1.1M  126G   1% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           126G     0  126G   0% /sys/fs/cgroup
/dev/sda1       361M  112M  227M  34% /boot
tmpfs            26G   32K   26G   1% /run/user/108

首先我们可以使用下边的指令来腾出一些空间

sudo apt-get autoclean #清理旧版本的软件缓存
sudo apt-get clean #清理所有软件缓存
sudo apt-get autoremove #删除系统不再使用的孤立软件

我们可以使用ncdu来查看文件夹的大小,一个可以替代du命令的工具,ncdu命令是对传统du命令功能上的增强,不需要像du那样输入大量的命令,就可以计算文件及目录大小并可以按照大小或文件名进行排序。

1 ncdu使用方法

安装方法

sudo apt install ncdu

可以使用以下的快捷方式

up, k — 向上移动光标
down, j – 向下移动光标
right/enter — 打开选定的目录
left, <, h — 打开父目录
n — 按文件名排序(升序/降序)
s — 按文件大小排序(升序/降序)
C – 按项目数排序(升序/降序)
d – 删除选定的文件或目录
t — 排序时将目录放在文件前面
g – 以图形方式显示百分比

2 空间清理

通过ncdu工具,我们能定位到系统的/var/lib/docker目录有异常,比较大

Linux之/dev/sda占用100%清理_第1张图片

其中aufs目录和container目录中保存了docker的一些文件,可以使用下边的命令清理

$ sudo docker system prune -a
WARNING! This will remove:
        - all stopped containers
        - all networks not used by at least one container
        - all images without at least one container associated to them
        - all build cache
Are you sure you want to continue? [y/N] y

注意这一步会把没有运行的镜像和容器全部删掉,要谨慎使用

可以看到,清理后/dev/sda6已经有空间了

/dev/sda6       160G  112G   41G  74% /

还可以使用下边的脚本进一步清理日志文件

#!/bin/sh

echo "==================== start clean docker containers logs =========================="

logs=$(find /var/lib/docker/containers/ -name *-json.log)

for log in $logs
        do
                echo "clean logs : $log"
                cat /dev/null > $log
        done

echo "==================== end clean docker containers logs   =========================="

 清理后查看空间

/dev/sda6       160G  102G   50G  68% /

你可能感兴趣的:(Linux)