Comando de Linux para generar cada nuevo PID de proceso

Comando de Linux para generar cada nuevo PID de proceso

¿Existe un comando de Linux que esté atento a nuevos procesos?

Mi objetivo en esto es ver cuándo gulpse llama a un nuevo comando, ejecutar la línea de comando con algo como psy luego filtrarla usando sed.

La parte importante es la observación de nuevos procesos, ya que no puedo buscar un PID una vez finalizado.

Respuesta1

Puede utilizar el auditdsubsistema para registrar los comandos ejecutados en su sistema. Está conectado al kernel, por lo que es muy confiable registrar todo lo que se ejecuta.

Mis ejemplos están en Fedora Linux, es posible que encuentres pequeñas diferencias dependiendo de tu distribución. (El auditdsubsistema es bastante complejo, por lo que puede resultar complicado hacerlo bien).

Primero comprueba que ya tienes auditd instalado y ejecutándose, con:

$ systemctl status auditd.service

Luego puedes comprobar qué reglas están cargadas. De forma predeterminada, en Fedora, obtienes:

$ sudo auditctl -l
-a never,task

Por lo tanto, debemos eliminar esta lista de "tareas" (que suprime las llamadas al sistema) y agregar una que registre "execve" (que es la llamada al sistema que ejecuta comandos).

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

Una vez hecho esto, todos los comandos se registrarán en el sistema de auditoría.

Luego puedes buscarlo usando el ausearchcomando. Por ejemplo, para encontrar todas las ejecuciones que llaman "gulp", puedes usar:

$ sudo ausearch -c gulp

El resultado será bastante detallado... Concéntrese en la línea type=EXECVE. Los argumentos se enumerarán comoa0="gulp" a1="first_argument" a2="second_argument" ...

Si obtiene una secuencia larga de números en lugar de una cadena entrecomillada, utilícela -ipara interpretarla.

¡Registrar cada comando que se ejecuta en su sistema puede ser muy costoso y consumir mucho espacio en disco! Es posible que también afecte el rendimiento. Si desea deshacer estos cambios, puede recargar el conjunto de reglas predeterminado con este comando:

$ sudo augenrules --load

También puede aplicar un filtro a la regla de registro, por ejemplo, para registrar solo ejecuciones de /usr/bin/gulp:

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

Entonces, tal vez esto sea excesivo... Pero es lo más confiable posible. ¡Espero que puedas encontrar tu camino a través del auditdsubsistema y que te brinde la información que estás buscando!

información relacionada