O Apache está atualmente usando esse arquivo, a única maneira real é matar o processo pelo qual o arquivo está sendo usado, o Apache.
Você pode tentar usar Unlocker no arquivo e ver se pode remover o bloqueio, isso pode ajudar.
Temos uma caixa do Windows 2000 executando o Apache que está ficando sem espaço em disco. Nós não podemos desligar ou reiniciar o Apache para limpar o bloqueio (eu sou um cara do UNIX, não sei qual é o termo equivalente para o Windows) no arquivo porque demora muito para reiniciar.
Tentando algo como
ren access_log access_log.bak
ou
del access_log
resulta em
The process cannot access the file because it is being used by another process.
Como limpamos o arquivo sem derrubar o Apache?
O Apache está atualmente usando esse arquivo, a única maneira real é matar o processo pelo qual o arquivo está sendo usado, o Apache.
Você pode tentar usar Unlocker no arquivo e ver se pode remover o bloqueio, isso pode ajudar.
Não pense que isso funcionará para o Windows 2000 (o google rápido diz que o PowerShell for Win 2000 não é suportado), mas descobri que esse fórum funciona para mim no Win 7, imaginei compartilhá-lo aqui para outras pessoas que desejam faça o mesmo:
Basicamente, obtenha uma cópia do Windows PowerShell e execute este comando:
while ($true) { gci c:\some\dir -recurse -Include mylogfile.log | ? { $_.length -gt 100mb } | Clear-Content; sleep 15 }
Isso truncará o arquivo de log toda vez que ele ficar acima de 100 MB enquanto você permitir que o comando seja executado.
Tags windows windows-2000