linux磁盘已满,查看那个目录文件最占磁盘空间并解决没有内存不耗费资源删除
df -Th查看磁盘空间占用情况
[root@IntelRC-Nginx-N023 ~]# df -Th
Filesystem                  Type      Size  Used Avail Use% Mounted on
/dev/mapper/centos-root     xfs        40G   35G  5.4G  87% /
devtmpfs                    devtmpfs  3.8G     0  3.8G   0% /dev
tmpfs                       tmpfs     3.9G   56K  3.9G   1% /dev/shm
tmpfs                       tmpfs     3.9G  427M  3.4G  11% /run
tmpfs                       tmpfs     3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/vda1                   xfs       509M  156M  354M  31% /boot
/dev/mapper/vm_data-lv_data xfs       300G   30G  271G  10% /opt/data
tmpfs                       tmpfs     779M     0  779M   0% /run/user/0
使用du -sh /* |sort -nr查看那个目录占用空间大
[root@IntelRC-Nginx-N023 ~]# du -sh /* |sort -nr
du: cannot access ‘/proc/256532/task/256532/fd/4’: No such file or directory
du: cannot access ‘/proc/256532/task/256532/fdinfo/4’: No such file or directory
du: cannot access ‘/proc/256532/fd/4’: No such file or directory
du: cannot access ‘/proc/256532/fdinfo/4’: No such file or directory
395M	/run
319M	/home
130M	/boot
120M	/etc
74M	/root
56K	/dev
33G	/var
30G	/opt
20M	/tmp
1.5G	/usr
0	/sys
0	/srv
0	/sbin
0	/proc
0	/mnt
0	/media
0	/lib64
0	/lib
0	/data
0	/bin
进一步目录排查
然后那个目录占用多 再通过du -s /root/* | sort -nr 一层层排查,找到占用文件多的地方
[root@IntelRC-Nginx-N023 ~]# du -sh /var/* |sort -nr
425M	/var/opt
245M	/var/cache
64M	/var/lib
29G	/var/adm
16K	/var/spool
16K	/var/data
8.0K	/var/db
3.8G	/var/log
0	/var/yp
0	/var/tmp
0	/var/run
0	/var/preserve
0	/var/nis
0	/var/mail
0	/var/lock
0	/var/local
0	/var/kerberos
0	/var/gopher
0	/var/games
0	/var/empty
0	/var/crash
[root@IntelRC-Nginx-N023 ~]# du -sh /var/adm/ |sort -nr
29G	/var/adm/
快速删除大量文件
假如你要在linux下删除大量文件,比如100万、1000万,像/var/spool/clientmqueue/的mail邮件,/usr/local/nginx/proxy_temp的nginx缓存等,那么rm -rf *可能就不好使了。 rsync 可以用来清空目录或文件,如下:
做删除操作前,确认下你要删除那个文件的权限,属主属组, 最好从固态硬盘copy到机械硬盘上留备份
# 1. 先建立一个空目录
mkdir /data/blank
# 2. rsync删除目标目录
rsync --delete-before -d /data/blank/ /var/adm/
# --delete-before 接收者在传输之前进行删除操作
# 这样目标目录很快就被清空了
为什么rsync能快速删除大文件?
1)rm命令大量调用了lstat64和unlink,可以推测删除每个文件前都从文件系统中做过一次lstat操作。过程:正式删除工作的第一阶段,需要通过getdirentries64调用,分批读取目录(每次大约为4K),在内存中建立rm的文件列表;第二阶段,lstat64确定所有文件的状态;第三阶段,通过unlink执行实际删除。这三个阶段都有比较多的系统调用和文件系统操作。
2)rsync所做的系统调用很少:没有针对单个文件做lstat和unlink操作。命令执行前期,rsync开启了一片共享内存,通过mmap方式加载目录信息。只做目录同步,不需要针对单个文件做unlink。另外,在其他人的评测里,rm的上下文切换比较多,会造成System CPU占用较多——对于文件系统的操作,简单增加并发数并不总能提升操作速度。 总结:频繁做减法不如直接从头来过把文件系统的目录与书籍的目录做类比,rm删除内容时,将目录的每一个条目逐个删除(unlink),需要循环重复操作很多次;rsync删除内容时,建立好新的空目录,替换掉老目录,基本没开销。
rm删除内容时,将目录的每一个条目逐个删除(unlink),需要循环重复操作很多次;rsync删除内容时,建立好新的空目录,替换掉老目录,基本没开销
rsync与rm删除速度比较
# 在一台主机上创建5万个空文件后再分别用rsync和rm 进行清理,以下是测试结果
[root@www data1]# mkdir -p /tmp/empty/
[root@www data1]# mkdir 361way;seq 1 50000 | xargs -I{} touch 361way/file_{}
[root@www data1]# time rsync  --delete -rlptD /tmp/empty/ /data1/361way/
real    0m0.149s
user    0m0.018s
sys     0m0.091s
[root@www data1]# seq 1 50000 | xargs -I{} touch 361way/file_{}
[root@www data1]# time rm -rf 361way/*
real    0m0.831s
user    0m0.366s
sys     0m0.464s
杀掉占用文件进程
如果以上方法没找到问题所在,那么可以使用以下命令, 看看是否删除掉的文件仍然被进程占用而没有进行实际删除
lsof |grep deleted
zabbix_ag    945            zabbix    1w      REG              253,0        1277  10173518/var/log/zabbix/zabbix_agentd.log-20191229 (deleted)
zabbix_ag    945            zabbix    2w      REG              253,0        1277  10173518/var/log/zabbix/zabbix_agentd.log-20191229 (deleted)
zabbix_ag    946            zabbix    1w      REG              253,0        1277  10173518/var/log/zabbix/zabbix_agentd.log-20191229 (deleted)
zabbix_ag    946            zabbix    2w      REG              253,0        1277  10173518/var/log/zabbix/zabbix_agentd.log-20191229 (deleted)
zabbix_ag    947            zabbix    1w      REG              253,0        1277  10173518/var/log/zabbix/zabbix_agentd.log-20191229 (deleted)
zabbix_ag    947            zabbix    2w      REG              253,0        1277  10173518/var/log/zabbix/zabbix_agentd.log-20191229 (deleted)
zabbix_ag    948            zabbix    1w      REG              253,0        1277  10173518/var/log/zabbix/zabbix_agentd.log-20191229 (deleted)
zabbix_ag    948            zabbix    2w      REG              253,0        1277  10173518/var/log/zabbix/zabbix_agentd.log-20191229 (deleted)
zabbix_ag    949            zabbix    1w      REG              253,0        1277  10173518/var/log/zabbix/zabbix_agentd.log-20191229 (deleted)
zabbix_ag    949            zabbix    2w      REG              253,0        1277  10173518/var/log/zabbix/zabbix_agentd.log-20191229 (deleted)
zabbix_ag    950            zabbix    1w      REG
												
											linux磁盘已满,查看那个目录文件最占磁盘空间并解决没有内存不耗费资源删除的更多相关文章
- linux下通过acl配置灵活目录文件权限(可用于ftp,web服务器的用户权限控制)
		
linux下通过acl配置灵活目录文件权限(可用于ftp,web服务器的用户权限控制) 发表于2012//07由feng linux 本身的ugo rwx的权限,对于精确的权限控制很是力不从心的,ac ...
 - linux磁盘已满,查看哪个文件占用多
		
1.使用df -h查看磁盘空间占用情况 2.使用sudo du -s -h /* | sort -nr命令查看那个目录占用空间大 3.然后那个目录占用多 再通过sudo du -s -h /var/* ...
 - linux inode已满解决方法
		
今天login server的一个网站,发现login后没有生成session.根据以往经验,一般是空间已满导致session文件生成失败. df -h Filesystem Size Used Av ...
 - ***Linux系统下如何查看及修改文件读写权限
		
查看文件权限的语句: 在终端输入:ls -l xxx.xxx (xxx.xxx是文件名) 那么就会出现相类似的信息,主要都是这些:-rw-rw-r-- 一共有10位数 其中: 最前面那个 - 代表的是 ...
 - [转]Linux系统下如何查看及修改文件读写权限
		
转自 :http://www.cnblogs.com/CgenJ/archive/2011/07/28/2119454.html 查看文件权限的语句: 在终端输入:ls -l xxx.xxx (xxx ...
 - linux磁盘已满,文件占用情况
		
du -sh /data0/* 如上,/data0/* 表示查看data0文件夹下各个目录的磁盘占用情况 df -h 查看总的磁盘占比
 - Linux命令(十四) 查看工作目录文件 ls
		
目录 1.命令简介 2.常用参数介绍 3.实例 4.直达底部 命令简介 ls 命令是 Linux 下最常用的命令. ls 就是 list 的缩写.默认情况下 ls 命令用来打印出当前目录的清单, 如果 ...
 - linux下不解包查看tar包文件内容
		
为减少日志文件占用的空间,很多情况下我们会将日志文件以天或周为周期打包成tar.gz 包保存.虽然这样做有利空间充分利用,但当我们想查看压缩包内的内容时确很不方便.如果只是一个tar.gz文件,可以将 ...
 - SQL Server 事务日志文件已满,收缩日志文件(9002)
		
错误如下图: 1.数据库 → 属性 → 选项 → 恢复模式 → 选择‘简单’:如下图: 2.任务 → 收缩 → 文件类型‘文件’ → 收缩模式‘在释放未使用的空间前重新组织页’,将文件收缩到K,大小填 ...
 
随机推荐
- P4279 [SHOI2008]小约翰的游戏(Anti_nim)
			
Link 题面 题目描述 小约翰经常和他的哥哥玩一个非常有趣的游戏:桌子上有 \(n\) 堆石子,小约翰和他的哥哥轮流取石子,每个人取的时候,可以随意选择一堆石子, 在这堆石子中取走任意多的石子,但不 ...
 - 【题解】[CQOI]动态逆序对
			
题目链接 题意如题,维护一个动态序列的逆序对总数. 注意题目给的是\([1,n]\)的排列,所以没必要离散化了. 考虑逆序对:二维偏序可以用树状数组做,现在是三维偏序,即加了一个时间维度. 找一个数前 ...
 - 插头 dp
			
插头dp 洛谷 黑题板子? P5056 给出n×m的方格,有些格子不能铺线,其它格子必须铺,形成一个闭合回路.问有多少种铺法? 1.轮廓线 简单地说,轮廓线就是已决策格子和未决策格子的分界线: 2,插 ...
 - 配置adpate的方式
			
配置adpate的方式 资源文件配置 ArryAdapter<CharSequence>cadapt= ArryAdapter.createFromResource(this,资源id,a ...
 - 部署MongoDB-4.2.7
			
二进制部署很简单 创建存放软件目录下载解压 存放数据和日志及配置文件路径需要手工进行创建 mkdir -p /application/tools/ cd /application/tools/ wge ...
 - shell-整数测试多范例多生产案例举例
			
1. 整数测试举例范例1:整数条件测试举例 root@test-1 ~]# a1=10;a2=13 [root@test-1 ~]# echo $a1 $a2 10 13 [root@test-1 ~ ...
 - python算法常用技巧与内置库
			
python算法常用技巧与内置库 近些年随着python的越来越火,python也渐渐成为了很多程序员的喜爱.许多程序员已经开始使用python作为第一语言来刷题. 最近我在用python刷题的时候想 ...
 - 【二分】CF Round #587 (Div. 3)E2 Numerical Sequence (hard version)
			
题目大意 有一个无限长的数字序列,其组成为1 1 2 1 2 3 1.......1 2 ... n...,即重复的1~1,1~2....1~n,给你一个\(k\),求第\(k(k<=10^{1 ...
 - spring boot:在项目中引入第三方外部jar包集成为本地jar包(spring boot 2.3.2)
			
一,为什么要集成外部jar包? 不是所有的第三方库都会上传到mvnrepository, 这时我们如果想集成它的第三方库,则需要直接在项目中集成它们的jar包, 在操作上还是很简单的, 这里用luos ...
 - centos8平台安装ansible2.9
			
一,ansible的用途: ansible是基于python开发的自动化运维工具, 它基于SSH远程连接服务, 可以实现批量系统配置.批量软件部署.批量文件拷贝.批量运行命令等多个运维功能 因为基于s ...