Como truncar ou limpar um arquivo que está em uso?

2

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?

    
por Smudge 21.09.2011 / 14:57

2 respostas

0

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.

    
por 21.09.2011 / 15:22
1

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:

link

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.

    
por 07.08.2013 / 18:51