Comando Linux para produzir cada novo processo PID

2

Existe um comando linux que irá observar novos processos?

Meu objetivo nisso é que eu quero ver quando um novo comando gulp é chamado, obter a linha de comando executada com algo como ps e, em seguida, filtrá-lo usando sed .

A parte importante é a observação de novos processos, uma vez que não posso procurar um PID quando terminar.

    
por Sarke 06.03.2018 / 04:36

1 resposta

4

Você pode usar o subsistema auditd para registrar os comandos executados em seu sistema. Ele está ligado ao kernel, então é muito confiável registrar tudo o que é executado.

Meus exemplos estão no Fedora Linux, você pode encontrar pequenas diferenças dependendo da sua distribuição. (O subsistema auditd é bastante complexo, por isso pode ser complicado acertar isso.)

Primeiro, verifique se você já tem o auditd instalado e em execução, com:

$ systemctl status auditd.service

Depois, você pode verificar quais regras são carregadas. Por padrão, no Fedora, você obtém:

$ sudo auditctl -l
-a never,task

Portanto, precisamos remover essa lista de "tarefas" (que suprime o syscalls) e adicionar uma que registre "execve" (que é o syscall que executa os comandos.)

$ sudo auditctl -d never,task
$ sudo auditctl -a always,exit -F arch=b64 -S execve

Uma vez feito isso, todos os comandos serão registrados no sistema de auditoria.

Você pode pesquisá-lo usando o comando ausearch . Por exemplo, para encontrar todas as execuções que chamam de "gulp", você pode usar:

$ sudo ausearch -c gulp

A saída será bastante detalhada ... Concentre-se no tipo = EXECTE linha. Os argumentos serão listados como a0="gulp" a1="first_argument" a2="second_argument" ...

Se você obtiver uma sequência longa de números em vez de uma string entre aspas, use -i para interpretá-la.

Registrar todos os comandos que são executados no seu sistema pode ser muito caro e usar muito espaço em disco! É possível que isso afete o desempenho também. Se você quiser desfazer essas alterações, recarregue o conjunto padrão de regras com este comando:

$ sudo augenrules --load

Você também pode aplicar um filtro à regra de registro, por exemplo, para registrar apenas execuções de / usr / bin / gulp:

$ sudo auditctl -a always,exit -F arch=b64 -F exe=/usr/bin/gulp -S execve

Então, talvez isso seja um exagero ... Mas é tão confiável quanto parece. Espero que você possa encontrar o caminho através do subsistema auditd e que ele forneça as informações que você está procurando!

    
por 06.03.2018 / 07:19

Tags