如何截断或清除正在使用的文件?

如何截断或清除正在使用的文件?

我们有一台运行 Apache 的 Windows 2000 机器,磁盘空间不足。我们无法关闭或重新启动 Apache 来清除文件上的锁定(我是 UNIX 专家,不确定 Windows 的对应术语是什么),因为重新启动需要很长时间。

尝试类似

ren access_log access_log.bak

或者

del access_log

结果是

该进程无法访问该文件,因为它正在被另一个进程使用。

我们怎样才能在不关闭 Apache 的情况下清除文件呢?

答案1

Apache 目前正在使用该文件,唯一真正的方法是终止 Apache 正在使用该文件的进程。

您可以尝试使用解锁者查看文件并查看是否可以移除锁,这可能会有所帮助。

答案2

不要以为这适用于 Windows 2000(谷歌搜索后发现不支持适用于 Win 2000 的 PowerShell),但我发现这个论坛帖子对我在 Win 7 上有用,我想我会在这里分享给其他想要做同样事情的人:

http://hardforum.com/showthread.php?t=1538826

基本上,获得一份Windows PowerShell并运行此命令:

while ($true) { gci c:\some\dir -recurse -Include mylogfile.log | ? { $_.length -gt 100mb } | Clear-Content; sleep 15 }

只要您让命令运行,每次日志文件超过 100MB 时它就会被截断。

相关内容