一、背景
背景:我们通过宝塔
等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
返回的是当前目录的总
大小,如20G
;du -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 *
看下哪个文件夹比较大
看到/root
有50G
之多,占了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