明天上班某电商技术部leader发觉个问题,说她们服务器硬碟满了。把日志文件都删除了,可硬碟空间依然满。于是df-h查看了下各个挂载点的状况(如右图)。
/dev/sda3占用了100%,这么我们du-s-h./*看下目录的占用情况(如右图)。
挂载点下的目录之和远大于4.5G,这么是哪些占用了硬碟呢?
以下为该问题的解答:
在apache/tomcat服务在运行状态下,清空了运行服务的日志红旗 linux,因而引起了/dev/sda3满了的问题。通常情况下,大多数服务(包括脚本)在运行时,是不能删掉当前正在写入的日志文件的。
原理剖析:
1.当前access.log日志正在被apache进程占用。
2.通过rm命令删掉access.log,实际只删掉了文件名(该日志文件应用记数不为0linux磁盘写满启动,因而空间不会被释放)。
3.通过rm命令删掉了access.log后,apache仍然写日志到access.log中,当开启apache进程时,早已通过access.log定位到该文件的inode了linux磁盘写满启动,就是说再写日志是不通过access.log,因而虽然删掉了access.log,apache仍然写日志到access.log所在的inode节点,所以造成硬碟空间降低。
4.由于删掉了access.log,所以我们就找不到该文件了,du也查不到linux基础教程,还会出现硬碟满了但看不到到底是什么文件占用的。
(写的不甚详尽,不明白的你们再google下。)
解决方式:
重启该日志文件的相关服务或程序,如:为apache日志文件则重启apache(如右图,重启后才硬碟空间占用正常)。