GNU/Linux >> Znalost Linux >  >> Linux

Jak sledovat nově vytvořené procesy v Linuxu?

Pokud jsou v jádře povoleny kprobes, můžete použít execsnoop z perf-tools:

V prvním terminálu:

% while true; do uptime; sleep 1; done

V jiném terminálu:

% 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...

Nejjednodušší způsob je povolit audit systémových volání

Podrobnosti naleznete na následujícím odkazu,

Zná někdo jednoduchý způsob, jak sledovat spawn kořenového procesu | Chyba serveru

Pokud sledujete všechny procesy, stačí odstranit -F uid=0 část

Protokoly se zapisují do /var/log/audit/audit.log


Některé příklady bpftrace použití k dosažení cíle.

  1. Nejjednodušší je sledování všech exec volání v systému:

    sudo bpftrace -e 'tracepoint:syscalls:sys_enter_exec*{ printf("pid: %d, comm: %s, args: ", pid, comm); join(args->argv); }'
    

    Existují alespoň dva sledovací body, které musíte sledovat sys_enter_execve a enter_execveat . V příkladu používám * symbol, aby odpovídal oběma systémovým voláním (tato syntaxe funguje od roku 2019) .

  2. Můžete také chtít sledovat všechna vlákna vytvářená v systému jako:

    sudo bpftrace -e 'kprobe:_do_fork{ printf("pid = %d, comm = %s\n", pid, comm); }'
    

    V tomto případě pro vás nejsou žádné procesní argumenty, nicméně to může být užitečné.

Chcete-li zobrazit seznam všech dostupných událostí, spusťte bpftrace -l .


Linux
  1. Jak nastavit limity na uživatelské procesy v Linuxu

  2. Linux – Jak vypsat jmenné prostory v Linuxu?

  3. Linux – Jak najít procesy pomocí sériového portu?

  1. Jak zabít běžící procesy v Linuxu

  2. Jak zkontrolovat využití swapu jednotlivých procesů v Linuxu

  3. Jak funguje debugger v Linuxu?

  1. Jak zabít proces v Linuxu? Příkazy k ukončení

  2. Jak nastavit ID procesu v Linuxu pro konkrétní program

  3. Jak rozlišovat mezi 2 Micros na Linuxu