我有一个设置,其中一个 db 服务器通过 nfs 与一个 websers 集群共享一些目录。
其中一个目录是 apache 日志目录,因此所有 Web 服务器都写入统一的数据库服务器 access.log。
我尝试使用 cat /dev/null > access.log 清除此文件,但该命令没有任何反应。
你知道我怎样才能在不移除它的情况下清除它吗?提前谢谢,西蒙。
答案1
首先我要说的是,让所有 Web 服务器通过 NFS 写入唯一的日志文件是一个非常糟糕的主意,会导致各种问题,就像您现在面临的问题一样。
为了能够清空该文件,您首先需要重命名它,然后继续重新启动每个 apache 实例,直到任何进程都无法打开该文件,然后您才能够删除它。
如果我可以建议一个替代方案,你可以通过让 apache 写入本地日志,然后使用 syslog-ng 将日志发送到远程机器来实现同样的事情,在远程机器上,所有的日志都收集在一个机器上,这是一个更有弹性的解决方案,我已经在这个问题中记录了操作方法这里
答案2
使用 touch /path/filename.log 创建一个零字节大小的文件