Visualizar arquivos temporários que existem por milissegundos

5

Estou tentando depurar um programa que não está registrando as informações de que preciso. Felizmente, ele grava arquivos temporários que devem conter as informações. Esses arquivos são gravados em um diretório como: program/temp/{someGUID} em uma das dez máquinas. Nem {someGUID} nem qual máquina conterá os arquivos temporários é conhecido antes da execução. Depois que a execução for concluída, os arquivos temporários serão excluídos. O tempo do começo ao fim é muito rápido para intervenção manual.

Eu inicio as execuções através de um programa cliente, mas é o servidor que grava os arquivos. Eu sou incapaz de manipular o programa do servidor e uma vez que uma corrida é expulso eu sou incapaz de pará-lo. Eu tenho acesso root a todas as máquinas em que os arquivos temporários podem ser gravados. Estou rodando o CentOS 6.

Existe uma maneira de permitir que o usuário do servidor grave arquivos no diretório temp, mas não os remova? Provavelmente iria travar a corrida, mas me daria a informação que eu preciso. Existe uma maneira de copiar o conteúdo da pasta temporária logo após serem gravados / antes de serem excluídos? Preciso instalar um programa para recuperar arquivos apagados?

    
por Daniel Koverman 03.04.2013 / 22:03

1 resposta

3

Listar os arquivos acessados por um programa menciona várias maneiras de registrar os acessos a arquivos do programa ( strace , LD_PRELOAD , LoggedFS, auditoria), mas nenhuma maneira conveniente de obter o conteúdo do arquivo.

Uma maneira conveniente de salvar toda a saída do programa é copyfs . CopyFS cria uma exibição de uma árvore de diretórios que retém todas as versões anteriores de todos os arquivos que já existiam nessa árvore de diretórios. Observe que ele pode ser usado sem acesso root. Monte o diretório que contém os arquivos temporários:

mkdir versions
copyfs-mount $PWD/versions $PWD/program/temp
program_to_debug
fusermount -u program/temp
ls versions
    
por 04.04.2013 / 02:54