Jika kprobes diaktifkan di kernel, Anda dapat menggunakan execsnoop
dari perf-tools:
Di terminal pertama:
% while true; do uptime; sleep 1; done
Di terminal lain:
% 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...
Cara termudah adalah mengaktifkan audit panggilan sistem
Lihat tautan berikut untuk detailnya,
Adakah yang tahu cara sederhana untuk memantau proses root spawn | Kesalahan Server
Jika Anda memantau semua proses, cukup hapus -F uid=0
bagian
Log ditulis ke /var/log/audit/audit.log
Beberapa contoh bpftrace
penggunaan untuk mencapai tujuan.
-
Yang paling sederhana adalah menelusuri semua
exec
panggilan dalam sistem:sudo bpftrace -e 'tracepoint:syscalls:sys_enter_exec*{ printf("pid: %d, comm: %s, args: ", pid, comm); join(args->argv); }'
Setidaknya ada dua tracepoint yang Anda butuhkan untuk menonton
sys_enter_execve
danenter_execveat
. Pada contoh saya menggunakan*
simbol untuk mencocokkan kedua syscalls (sintaks ini berfungsi sejak 2019) . -
Seseorang mungkin juga ingin memantau semua utas yang dibuat di sistem sebagai:
sudo bpftrace -e 'kprobe:_do_fork{ printf("pid = %d, comm = %s\n", pid, comm); }'
Namun, tidak ada argumen proses untuk Anda dalam kasus ini, namun ini mungkin berguna.
Untuk melihat daftar semua event yang tersedia, jalankan bpftrace -l
.