Si kprobes están habilitados en el kernel, puede usar execsnoop
de perf-herramientas:
En la primera terminal:
% while true; do uptime; sleep 1; done
En otra terminal:
% git clone https://github.com/brendangregg/perf-tools.git
% cd perf-tools
% sudo ./execsnoop
Tracing exec()s. Ctrl-C to end.
Instrumenting sys_execve
PID PPID ARGS
83939 83937 cat -v trace_pipe
83938 83934 gawk -v o=1 -v opt_name=0 -v name= -v opt_duration=0 [...]
83940 76640 uptime
83941 76640 sleep 1
83942 76640 uptime
83943 76640 sleep 1
83944 76640 uptime
83945 76640 sleep 1
^C
Ending tracing...
La forma más fácil es habilitar la auditoría de llamadas del sistema
Consulte el siguiente enlace para obtener más información,
¿Alguien sabe una forma sencilla de monitorear la generación de procesos raíz? Error del servidor
Si está monitoreando todos los procesos, simplemente elimine el -F uid=0
parte
Los registros se escriben en /var/log/audit/audit.log
Algunos ejemplos de bpftrace
uso para lograr el objetivo.
-
El más simple es rastrear todos los
exec
llamadas en el sistema:sudo bpftrace -e 'tracepoint:syscalls:sys_enter_exec*{ printf("pid: %d, comm: %s, args: ", pid, comm); join(args->argv); }'
Hay al menos dos puntos de seguimiento que debe vigilar
sys_enter_execve
yenter_execveat
. En el ejemplo uso el*
símbolo para que coincida con ambas llamadas al sistema (esta sintaxis funciona desde 2019) . -
También es posible que desee monitorear todos los subprocesos que se crean en el sistema como:
sudo bpftrace -e 'kprobe:_do_fork{ printf("pid = %d, comm = %s\n", pid, comm); }'
Sin embargo, no hay argumentos de proceso para usted en este caso, sin embargo, puede ser útil.
Para ver la lista de todos los eventos disponibles, ejecute bpftrace -l
.