首先我要说一下,我不是系统管理员,我是一个对 unix 系统知之甚少的 php 程序员,所以,如果我说了一些废话,请原谅我。
我正在管理这台安装了一些 Wordpress 的虚拟机,在寻找导致一些前端错误的原因时,我注意到磁盘每两个小时就会开始慢慢地填充一些我尚未识别的东西,并不断填充,直到没有剩余空间(我猜测,这就是客户在前端看到的错误的原因,因为 mysql 开始导致大量查询失败),然后突然将剩余空间降至初始状态。
由于我最近通过众多过时的 wordpress 安装中的一个漏洞清理了文件系统上安装的 shell,所以我现在推测是某种恶意软件导致了这个问题(或者可能是某个白痴编写的某些可怕的脚本)。
Glances + Grafana 网络监视器显示的磁盘使用情况的屏幕截图
我df
可以看到磁盘不断地被填满,直到没有剩余空间。
我du
只能看到只有目录/var/log/
和/var/lib/php5/sessions
正在增加它们的大小,就像通常发生的那样
我怀疑临时文件夹中有东西,确实如此,并且inotifywait -m /tmp/ -r -e create -e moved_to -e modify
输出是无限的子序列/tmp/ MODIFY tmpf9dIVwz
。文件的名称在填充期间保持不变,下次会有所不同。我试图找出该文件是什么以及哪个进程正在写入/编辑它,但 /tmp/ 文件夹始终为空,并且该文件不存在。
我如何确定导致磁盘填充的原因是什么?
答案1
成立。
ps aux | grep php
向我展示了哪个 php 脚本正在运行,并且 pid 与显示的 pid 相匹配ls -d /proc/[1-9]*/fd/* | grep tmp
。
UPDATE
这是一个编写糟糕的 php 脚本,它试图在无限循环中创建不存在的数据(糟糕的解析的 csv 文件)的SQL while
。
我现在猜测失败的UPDATE
语句(触发未在任何地方记录的 PHP FATAL)是导致/tmp
文件夹饱和的原因