由于磁盘空间不足,我的 Ubuntu 服务器已停止。我删除了一些增长非常快的日志文件。但df -h
仍然显示我没有剩余空间。当我运行时,du -sh /*
我可以看到在删除日志后我应该有足够的磁盘空间。
我跑了lsof +L1
,它带来了两个文件:/var/log/mail.log
和/var/log/mail.err
。这是我删除的两个日志。我重新启动了 apache、postfix 和 mysql(mysql 不会重新启动,因为磁盘空间不足,它认为)但仍然df -h
显示没有空间。
在这种情况下,文件可能由系统日志管理。您可能有 rsyslog、sysklogd 或 syslog-ng。从记忆中我认为 rsyslog 是默认的,所以尝试:
sudo 服务 rsyslog 重新启动
这应该释放文件,并允许它们真正得到清理。在最后一个文件句柄关闭之前,文件系统无法释放空间。
(或者你可以像 Windows 管理员那样做,当然只是重启......)
您需要重新启动创建这些日志的服务,因为它们锁定了这些日志。例如。如果是 apache,只需重新启动 apache,使用率就会下降。
下次发生这种情况时,您应该检查
fuser
该文件是否正在被进程使用。如果是这样,要么停止该进程,然后删除,要么使用cp /dev/null TARGETFILE
将文件大小减小为零(这不会更改文件句柄,并且您不必重新启动任何东西)。