Ciclar automaticamente arquivos numerosos ou grandes para o lixo

7

Eu fui encarregado de consertar um programa de fornecedor que, sob certas condições, despeja shows de arquivos inúteis em um diretório de log. Ele acaba enchendo as máquinas dos usuários. Minha tarefa é descobrir como fazer com que pare sem qualquer código-fonte ou processos de execução adicionais e sem tornar o programa kasplode. Em outras palavras, estou procurando usar um recurso do sistema de arquivos para controlar o crescimento.

Uma ideia que eu tive foi fazer um link duro daquela pasta para o NUL, como você poderia fazer com /dev/null no mundo linux. No entanto, minhas tentativas de usar o programa mklink para criar uma junção resultam em uma mensagem que diz Local volumes are required to complete the operation.

Alguma idéia de como completar o entroncamento ou outras idéias para resolver o problema?

    
por minameismud 25.05.2010 / 14:55

7 respostas

1

Se você conseguir persuadir o programa a gravar seus arquivos de log na raiz de uma letra de unidade, digamos, T :, tente

subst T: NUL:

porque o redirecionamento para o segmento de bits funciona, por exemplo, coisas como esta:

echo > T:\some_file

O que não funciona são leituras do drive T: falso, criação de pastas e acesso de leitura de arquivos. Qual sorta faz sentido, mas talvez o seu aplicativo confie neles.

    
por 16.07.2012 / 23:13
1

Não. Hard links só estão disponíveis dentro de NTFS, e o arquivo NUL não é um arquivo NTFS - é o nome WIN32 do objeto namespace \. \ Devices \ NULL, mas você não pode criar um link físico para ele.

Você poderia criar um link físico (um atalho) para o arquivo NUL se quisesse, mas não consigo imaginar por que seria uma boa ideia.

    
por 23.02.2012 / 21:48
1

Estou apenas cuspindo idéias aqui:

Se o programa com problema tiver opções de linha de comando, talvez ele possa ser desativado. Eu perguntaria primeiro ao vendedor, supondo que você possa e não tenha feito isso.

Se o programa do fornecedor fizer algum tipo de evento no sistema que o Windows lê, talvez você possa criar um script que exclua a pasta de lixo eletrônico (lote, cmd ou PowerShell). Se isso for possível, lembre-se de esperar até que o programa do fornecedor seja concluído.

Último recurso é configurar uma tarefa agendada para excluir no logoff do Windows. Isso requer que as máquinas clientes tenham espaço suficiente para o lixo viver durante a sessão.

Se os clientes são servidores, não logoff, configure-o para rodar, digamos a cada 24 horas ou como sempre isso acontece dividido por 2. Divida por 2 para reduzir a chance de lixo duplo, por assim dizer.

    
por 03.03.2012 / 10:40
0

Por que não apenas escrever um script que remova qualquer arquivo .log que seja gravado no diretório ofensivo regularmente (ou no início / fim do uso do programa)? Concedido, é um band-aid até que você consiga a empresa consertar o programa deles.

Como:

do {}
While (Get-ChildItem C:\problemfile).Count = 0)
Remove-Item "c:\problemfile\*.log"
Write-Host “Program log file cleaned successfully”

Eu sou novo no PoSH, então esse script pode não funcionar, mas acho que o conceito é bom.

    
por 06.03.2012 / 00:13
0

Se você não precisar do arquivo de log ofensivo e o caminho / nome for uma variável conhecida, tente criá-lo como um arquivo somente leitura como usuário root / privileged para evitar sua criação.

Como alternativa, você pode criar um volume / partição somente leitura ou um disco em disco de tamanho limitado, para limitar o tamanho do arquivo.

Se o programa exigir que o arquivo de log continue com a operação e 'kasplodes' quando ele não puder ser escrito, talvez seja necessária uma solução programática, como rotações de log, se você não conseguiu canalizar para nulo.

    
por 10.06.2012 / 17:18
0

Você pode criar um Usuário do Windows separado para executar o programa (deve ser uma conta protegida por senha) e, em seguida, clicar com o botão direito do mouse na unidade onde os logs serão gravados e selecionar propriedades. Em seguida, clique na guia Cota e configure uma cota de espaço em disco para esse usuário. Finalmente segure shift e clique com o botão direito do mouse no arquivo .exe que inicia o programa e selecione executar como usuário diferente, selecionando a conta que você acabou de criar.

    
por 13.06.2012 / 15:48
-1

Se você preferir o link físico, você terá que escolher

C: > mklink / h "C: \ Arquivos de programas \ MyNewHardlinkFolder" NUL

    
por 25.05.2010 / 15:32