2

У нас есть Windows 2000, работающая под управлением Apache, на которой не хватает места на диске. Мы не можем выключить или перезапустить Apache, чтобы снять блокировку (я парень из UNIX, не уверен, что такое эквивалентный термин для Windows) для файла, потому что перезапуск занимает слишком много времени.

Пытаясь что-то вроде

ren access_log access_log.bak

или же

del access_log

результаты в

Процесс не может получить доступ к файлу, потому что он используется другим процессом.

Как мы очищаем файл, не снимая Apache?

2 ответа2

1

Не думаю, что это будет работать для Windows 2000 (быстрый Google говорит, что PowerShell для Win 2000 не поддерживается), но я нашел этот пост на форуме, который работает для меня на 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 }

Это будет обрезать файл журнала каждый раз, когда он становится больше 100 МБ, пока вы разрешаете выполнение команды.

0

Apache в настоящее время использует этот файл, единственный реальный способ - убить процесс, которым этот файл используется, Apache.

Вы можете попробовать использовать Unlocker для файла и посмотреть, сможете ли вы снять блокировку, это может помочь.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .