我删除了 7GB 的 apache2 other_vhosts_access.log.1,以释放我们服务器上的一些空间。基本上,我删除了除最新访问日志之外的所有日志。最大的日志未压缩 - 我假设它没有经过 logrotate(正在运行)。
运行 df -h 没有显示额外空间,并且我尝试了等等的所有组合apache/apachectl restart/reload/graceful
,正如其他问题中提到的那样 - 没有结果。lsof
也没有显示打开的文件。
答案1
很可能您已经删除了日志,但是 apache 已将其锁定。
您应该使用lsof
并查找(已删除)。IBM 指南这里。修复的方法是重启apache进程来释放该文件。
答案2
尝试将 /dev/null 复制到您的日志文件。这应该会截断您的文件,而不会关闭 apache 持有的文件句柄...
cp /dev/null other_vhosts_access.log.1
答案3
我遇到了同样的问题,并按如下方式解决。
问题:
我手动删除了access_log
目录error_log
中的文件/var/www/vhosts/mywebsite/logs/mywebsite1/
以释放空间,但即使文件消失了,空间也没有释放。
解决方案:
我使用lsof
按大小排序来搜索大文件(命令发现这里):
lsof -s | awk '$5 == "REG"' | sort -n -r -k 7,7 | head -n 100
access_log
我在另一条路径上找到了两个大文件error_log
(注意与之前的路径的区别):
/var/www/vhosts/system/mywebsite1/logs/
我使用命令重置了这两个文件:
:>/var/www/vhosts/system/mywebsite1/logs/access_log
:>/var/www/vhosts/system/mywebsite1/logs/error_log
文件已被清空并且空间已被释放。
希望能够帮助到大家。
答案4
就我而言,我需要重新启动rsyslog
,它是处理我的 ubuntu 系统上的日志的程序,它释放了所有的磁盘空间。
这可以重新启动运行sudo service rsyslog restart
,或者如果您使用的是 16.04+ sudo systemctl restart rsyslog
。