前言:
此时朋友们对“删除磁盘空间 linux”大约比较注意,兄弟们都需要学习一些“删除磁盘空间 linux”的相关文章。那么小编同时在网上汇集了一些关于“删除磁盘空间 linux””的相关知识,希望兄弟们能喜欢,我们一起来学习一下吧!简介
磁盘空间监控是最基本的监控。清理磁盘空间也是有技术的。
清理磁盘空间1、查找大文件
查找大于1G的文件:
find /data/isos/ -type f -size +1048576k -exec ls -lh {} \; | awk '{ print $9 ": " $5 }'
清理掉不用的大文件
2、df和du读取到的文件不一样
一般都是文件句柄没有释放造成的,有些人清理日志文件的时候是直接rm,不管程序是否还在占用句柄。这样子会造成文件已经被删除,但是磁盘空间不释放的情况:
可以通过命令去查看被标记为(deleted)的文件,第二列就是PID,重启或者重载一下对应的程序就可以了:
lsof -n | grep deleted
但是这个命令有一个很大的问题,就是文件句柄过多的情况下要统计很久,而且会造成负载过高。
这时候直接去找进程目录的描述目录比较快
ls -l /proc/[0-9]*/fd/* | grep deleted
/proc/[pid]/fd pid就是程序的IP,就可以找到对应的程序了,重启一下就可以了
3、磁盘空间使用率都没有问题,但是就是报"no space left"
inode不够用了,这个是在磁盘格式化的时候就固定了,要重新格式化文件系统,一般格式化默认是够用的,不够用一般是太多小文件造成的。
例如邮件服务如果出现异常就会出现很多小文件在/var/spool/clientmqueue/,一般是cron任务产生的邮件,可以修改cron任务,将输入重定向到对应的文件就不会有邮件,
如果在 /var/spool/clientmqueue/下直接执行,rm -f * 会出现Bash Argument list too long的问题
这时候可以直接删除目录,重启一下服务。可以使用find命令逐个删除
find . -name "*.tmp" -exec rm -f {} \;
也可以使用xargs重定向逐个删除
ls * | xargs rm -f
也可以使用rsync同步一个空目录来删除文件。
mkdir /tmp/empty/
rsync -a --delete empty/ /var/spool/clientmqueue/
总结
清理磁盘的时候,如果不确认文件是否被占用,可以使用
echo -n ""> /var/log/somelog.log
清空文件,而不是直接rm,导致空间没释放。
标签: #删除磁盘空间 linux