linux磁盘空间满处理情况
使用df -h命令查看空间使用情况,磁盘空间使用了100%。
常规方法,清日志、删除无用的文件。删除后再次查看空间大小。
现在遇到的情况是,使用du --max-depth=1 -h / 命令查看,各目录使用空间总和只占空间一部分,远没有达到100%的使用率。
原因:系统磁盘空间未释放,可能原因是忽略了有应用一直在往其中写数据,直接删除某文件无法释放磁盘空间。
操作步骤:
1、执行 lsof | grep deleted 发现有大量刚刚删除文件的进程存在,kill掉进程(或者重启进程)
2、lsof | grep deleted |wc -l 可以看到有多少个进程。
3、需要kill进程数量多时,使用命令。
lsof | grep deleted | awk '{if (NR > 1){print $2}}'|uniq | xargs kill -9
awk '{if (NR > 1){print $2}}',获取第二列
uniq,去重复
xargs kill -9 ,就是将获取第二列,再通过uniq去重的值,传递给xargs,然后kill -9 进程号
4、再查看空间使用率,已经降下来了。此次再启相关的应用。
清日志时,可以使用此种方式。 echo “ ” 》/tmp/acess.log
通过这种方法,磁盘空间不但可以马上释放,也可使用进程继续向文件写入日志
当然也可以有多种方式避免日志空间满
比如,在定时任务里执行,contab -e
* 1,7,13,19 * * * for i in `find / -type f -regex '.*\.log\|.*\.out\|.*\.txt' -size +100M 2>/dev/null`; do echo >$i; done
定时任务检查指定文件类型超过100M,则会清日志。