Comando Linux para gerar cada novo PID de processo

Comando Linux para gerar cada novo PID de processo

Existe um comando do Linux que observará novos processos?

Meu objetivo é ver quando um novo gulpcomando é chamado, executar a linha de comando com algo como pse filtrá-lo usando sed.

O importante é acompanhar novos processos, já que não consigo procurar um PID depois de finalizado.

Responder1

Você pode usar o auditdsubsistema para registrar os comandos executados em seu sistema. Ele está conectado ao kernel, por isso é muito confiável para registrar tudo o que é executado.

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

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

$ systemctl status auditd.service

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

$ sudo auditctl -l
-a never,task

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

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

Feito isso, todos os comandos serão registrados no sistema de auditoria.

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

$ sudo ausearch -c gulp

A saída será bastante detalhada... Concentre-se na linha type=EXECVE. Os argumentos serão listados comoa0="gulp" a1="first_argument" a2="second_argument" ...

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

Registrar cada comando executado em seu sistema pode ser muito caro e consumir muito espaço em disco! É possível que isso também afete o desempenho. Se quiser desfazer essas alterações, você pode recarregar 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 é o mais confiável possível. Espero que você consiga se orientar no auditdsubsistema e que ele lhe forneça as informações que procura!

informação relacionada