由于缺less磁盘空间,我的Ubuntu服务器已经停止。 我删除了一些非常快速增长的日志文件。 但是df -h仍然显示我没有剩余空间。 当我运行du -sh /*我可以看到删除日志后应该有足够的磁盘空间。
我运行了lsof +L1 ,它提出了两个文件: /var/log/mail.log和/var/log/mail.err 。 这是我删除的两个日志。 我重新启动Apache,后缀和MySQL(MySQL不会重新启动,因为磁盘空间不足,它认为),但仍然df -h显示没有空间。
在这种情况下,文件可能由syslogpipe理。 你可能有rsyslog,sysklogd或syslog-ng。 从内存我认为rsyslog是默认的,所以尝试:
sudo服务rsyslog重新启动
这应该释放文件,并让他们实际上得到清理。 在最后一个文件句柄closures之前,文件系统不能释放空间。
(或者你可以像Windowspipe理员那样做,然后重启当然…)
您需要重新启动创build这些日志的服务,因为它们对这些日志具有locking。 例如。 如果是apache,只需重新启动Apache,使用率应该下降。
下次发生这种情况时,如果文件被进程活跃使用,您应该检查fuser 。 如果是这样,要么停止该进程,然后删除,或者使用cp /dev/null TARGETFILE将文件大小减小到零(这不会改变文件句柄,并且不必重新启动)。