Quais processos NÃO devem ser usados?

3

Criei uma pequena função para strace 'de um conjunto de processos do usuário atual por nome:

function pstrace() {
    local pattern="$1";
    shift;
    prefixDashP $(pgrep -U $(whoami) $pattern) | xargs strace -o /dev/stdout $@;
}

function prefixDashP() {
    local new_args=();
    for arg; do
        new_args+=( '-p' );
        new_args+=( "$arg" );
    done;
    for arg in "${new_args[@]}"; do
        echo "$arg";
    done;
}

# Usage:  pstrace pattern1 pattern2 ...

O problema é que, se eu especifico acidentalmente um padrão muito amplo, ele tenta monitorar processos que ele não deve monitorar, então meu sistema congela.

Existe uma lista de processos que eu sempre posso excluir?

    
por Mehrdad 30.07.2011 / 23:38

1 resposta

6

Você não deve rastrear nenhum processo envolvido no processamento da saída de strace . Isso significa, pelo menos, o emulador de terminal no qual você está executando strace. Eu não esperaria que todo o seu sistema fosse congelado, apenas desacelerou; A menos que você esteja executando strace como root e rastreando seu servidor X, você deve ser capaz de mudar para um terminal diferente e eliminar o processo strace.

Seria menos arriscado e provavelmente mais conveniente enviar a saída strace para um arquivo. Inicie o less depois de iniciar o strace e o mate se você rastreou acidentalmente o emulador de terminal.

Se você acha que está seguindo muitos processos, pode estar usando a ferramenta errada. Um sistema de auditoria em todo o sistema, como o do Linux (veja exemplos e ponteiros) aqui ou aqui ), pode ser mais apropriado.

    
por 01.08.2011 / 00:47