05
2024
08
16:28:46

Linux清理磁盘空间常用命令

查看磁盘占用情况

mplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" contenteditable="false" design="by Mashiro" style="box-sizing: border-box; overflow: auto; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-alternates: normal; font-kerning: auto; font-optical-sizing: auto; font-feature-settings: normal; font-variation-settings: normal; font-variant-position: normal; font-stretch: normal; font-size: 15px; line-height: 1.6; font-family: "Microsoft YaHei", Arial, sans-serif; background-color: rgb(33, 37, 43); border-radius: 5px; margin-bottom: 1.6em; max-width: 100%; text-shadow: none; position: relative; padding-top: 30px; box-shadow: rgba(0, 0, 0, 0.4) 0px 10px 30px 0px;"># 查看服务器磁盘空间整体情况df -h# 查看当前目录,哪个文件占用最大du -h --max-depth=1# 查看当前目录下各文件及目录占用大小du -sh *

按文件类型日期查找文件并删除

# 不加 -maxdepth 则会遍历当前目录下所有子目录中所有文件# 找出当前目录下不包含子目录1天之前的 log 文件并删除find ./ -maxdepth 1 -name "*.log*" -mtime +0 -exec rm -rf {} \;# 找出当前目录下不包含子目录3天之内的 .log 文件并删除find ./ -maxdepth 1 -name "*.log*" -mtime -3 -exec rm -rf {} \;

其他参数

-mindepth n: 限定搜索指定目录的最小深度-maxdepth n: 限定搜索指定目录的最大深度atime 最后一次访问时间, 如 less, more 等, 但 chmod, chown, ls, stat 等不会修改些时间, 使用 ls -utl 可以按此时间顺序查看ctime 最后一次状态修改时间, 如 chmod, chown 等状态时间改变但修改时间不会改变, 使用 stat file 可以查看mtime 最后一次内容修改时间, 如 vi 保存后等, 修改时间发生改变的话, atime 和 ctime 也相应跟着发生改变-ctime -n 查找距现在 n*24H 内修改过的文件-ctime n 查找距现在 n*24H 前, (n+1)*24H 内修改过的文件-ctime +n 查找距现在 (n+1)*24H 前修改过的文件[a|c|m]min [最后访问|最后状态修改|最后内容修改]分钟数(n*min)[a|c|m]time [最后访问|最后状态修改|最后内容修改]天数(n*24H)

查看文件目录数量

# 查看当前目录下的文件数量(不包含子目录中的文件)ls -l | grep "^-" | wc -l# 查看当前目录下的文件数量(包含子目录中的文件)注意:R,代表子目录ls -lR | grep "^-" | wc -l# 查看当前目录下的目录个数(不包含子目录中的目录)ls -l | grep "^d" | wc -l# 查看当前目录下的目录数量(包含子目录中的目录)注意:R,代表子目录ls -lR | grep "^d" | wc -l# 统计所有以"test"开头的目录下的全部文件数量ls -lR test*/|grep "^-"| wc -l# 统计当前目录下42天前所有文件总共大小(单位字节)find ./ -name "*.*" -mtime +42 -exec ls -l {} \;|awk 'BEGIN {SUM=0}{SUM+=$5} END{print SUM}'

找出已经删除但空间未释放的大文件并清空

  1. 找出已经删除但磁盘空间未释放的文件
    如果文件已经删除,但实际的磁盘空间未释放,这个时候文件句柄 fd 相关信息还在内存中,可以通过 lsof 命令找出,比如打开文件的pid和读写文件的系统fd。

# yum -y install lsof# lsof |grep -i deletejava      20302  5351          hbase    3w      REG              253,1 25778031203      43040 /var/log/hbase/gc.log-201812251535 (deleted)java      20302  5354          hbase    3w      REG              253,1 25778031203      43040 /var/log/hbase/gc.log-201812251535 (deleted)java      20302  5988          hbase    3w      REG              253,1 25778031203      43040 /var/log/hbase/gc.log-201812251535 (deleted)java      20302 12680          hbase    3w      REG              253,1 25778031203      43040 /var/log/hbase/gc.log-201812251535 (deleted)java      20302 15047          hbase    3w      REG              253,1 25778031203      43040 /var/log/hbase/gc.log-201812251535 (deleted)java      20302 16379          hbase    3w      REG              253,1 25778031203      43040 /var/log/hbase/gc.log-201812251535 (deleted)java      20302 16380          hbase    3w      REG              253,1 25778031203      43040 /var/log/hbase/gc.log-201812251535 (deleted)
  1. 清空已经删除但未释放的大文件
    如果要让大文件彻底删除,通常需要重启打开文件的进程,但是有时在线服务不方便重启,影响服务的可用性。
    这个时候可以通过 /proc/${pid}/fd 信息找到打开这个文件的系统 fd,然后通过 fd 来清空文件

# ll /proc/20302/fd/ |grep 201812251535l-wx------ 1 hbase hadoop 64 Oct 18 21:02 3 -> /var/log/hbase/gc.log-201812251535 (deleted)# 清空文件# echo > /proc/20302/fd/3




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/7417.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: