Administrator
发布于 2021-12-09 / 221 阅读
0
0

查看linux磁盘空间+清理

一、背景

背景:我们通过宝塔等Web面板的监控看到磁盘空间快满了,于是要清理下无用的文件、文件夹。这里记录需要用到的命令清理的步骤

二、df(disk free)- 少用

磁盘分区为单位查看磁盘空间。

小知识:
-h--human-readable 人类可读(即根据大小适当显示),比如三个数据16379784,1300,812,不加-h就是原样显示;加了-h就是16G、1.3M,812k。这个参数很多linux命令都会用到,我们需要记住这个常用参数。

  • df -h

三、du (disk usage) - 经常用

用于查看当前目录的各个文件的大小(包括子目录、子目录的子目录..)。

小知识:
一般命令中的[]表示可有可不有:如du -sh [目录名]du -sh返回的是当前目录的大小,如20Gdu -sh /www返回的是/www目录的总大小。

注意:下面描述的【 文件夹 = 目录 = directory 】

  • du:各个文件都能看到,文件少可以用,文件多根本不适合人类看。
  • du -sh [目录名]:查看该目录的总大小 (看总的,只有一个数字)
    -s --summarize表示汇总,如果文件少想看递归子目录可以不加-s
  • du -sh *:看当前目录下,每个文件、文件夹(不会递归进去,算总大小)的大小。 不会算隐藏文件,常用(排序): du -sh * | sort -h
  • du -sh * .[^.]*:看当前目录下,隐藏文件、文件夹的大小。
  • du -h --max-depth=1:看当前目录下,每个子目录的空间大小。包含隐藏目录

四、清理

下面讲下我清理的步骤:

1. 看下总磁盘空间是否不够 (可省略,一般是已经确认了才看)

使用df -h或者du -sh /,看到磁盘的确不足了。

2. 根目录下,使用du -sh *看下哪个文件夹比较大

看到/root50G之多,占了100G磁盘的一半。

3. 进入/root,执行du -sh *看下哪个文件夹比较大

看到文件夹都是比较小的,怀疑是隐藏文件比较大。

4. 使用du -sh * .[^.]*看是否是隐藏文件大

发现.jenkins这个隐藏文件夹有48G之大,查阅文档发现jenkins默认保留历史构建包,调整设置删除不需要的历史包。删除后.jenkins大小只有1G左右,节省了49G的空间。

总结:其实只要记住du -sh *这个命令就好了。隐藏文件大的场景比较少,还有排序的命令,需要的时候过来翻阅下文档就好。

五、清理后空间没有减少,再清理

如果要删除的文件被程序占用,比如mysql的log日志,必须要把mysql的进程停止,才能真正释放打上删除标记的空间。

lsof | grep delete    #如果怀疑删掉的数据还在占用磁盘空间试试这个
kill -9 pid           #结束掉进程就能释放磁盘空间了

使用shell脚本清理:

for i in `lsof | grep delete | awk '{print $2}'`; do kill -9 $i; done

评论