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,则会清日志。

find . -type f -size +100M | grep -E '.out$|.log$|.txt$' | awk '{cmd="echo > "$0;system(cmd)}'
 
 

 

posted @ 2022-04-11 16:10  milkty  阅读(639)  评论(0编辑  收藏  举报