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