Linux 服务器磁盘已满

Linux 服务器磁盘已满

我使用 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);}'

相关内容