![Linux 服务器磁盘已满](https://linux22.com/image/584461/Linux%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%A3%81%E7%9B%98%E5%B7%B2%E6%BB%A1.png)
我使用 WinSCP 将我的网站页面上传到远程 Ubuntu Linux 服务器(VPS xen 托管)。当我复制文件时,它会写入服务器,大小为 0。当我检查可用磁盘空间时:
df -h
我得到:/dev/xvda,Avail=0% 和 Used=100% 我尝试使用以下命令检查已删除的文件:
lsof | grep '(deleted)'
但找不到 lsof 命令。我接下来该怎么做?
答案1
我试过:sudo du -h --max-depth=1 ./ 并遍历树,发现 /srv/www/mysite.com/logs/access.log 的大小为 13G!!!!我用 rm access.log 删除了 access.log。但 df -h steel 报告 /dev/xvda 0% 可用... 我应该做其他什么来最终删除该文件吗?????
现在 lsof 应该会报告已删除的文件。你应该使用以下命令向 http 服务器发送 HUP 信号
/etc/init.d/apache2 reload
以后可以通过编辑 /etc/logrotate.d/apache2 (输入正确的日志路径) 来避免这种情况
答案2
lsof 命令似乎只列出了即将被删除的文件(因为它们正在使用中)。也许 lsof 存在但不在您的路径中 - 尝试搜索它。
你可以:
- 删除您不需要的文件:尝试查找较大的目录或文件 - 参见命令“du”。
- 向提供商请求更多空间
答案3
/dev/xvda 是磁盘路径。分区应该以某个数字结尾(例如 /dev/xvda1)。在最后一列中检查 df 是否是您的根分区或主分区。“Avail=0%”表示您可能已用完可用空间。使用以下命令检查占用太多空间的是什么
du -sm <path>
对于你的主目录,它将是
du -sm $HOME/*
答案4
您可以使用此命令找出哪个文件或目录占用了最多的磁盘空间
du -hsx * | sort -rh | head -10
该命令在您将启动它的目录中工作。它显示 10 个最大的文件/目录。
在您怀疑其中的文件太大的目录中使用它,例如 /var/log/ 您的主目录。
如果您什么也没找到那么您的硬盘可能有问题。
更新:如果你安装了 perl,你可以使用这个行:
du -k | sort -n | perl -ne 'if ( /^(\d+)\s+(.*$)/){$l=log($1+.1);$m=int($l/log(1024)); printf ("%6.1f\t%s\t%25s %s\n",($1/(2**(10*$m))),(("K","M","G","T","P")[$m]),"*"x (1.5*$l),$2);}'