Как регистрировать, какие процессы выполняли определенные системные вызовы?

Если вы не помните, что именно вы меняли, то наверное самое простое решение - сбросить все по схеме /org/gnome/terminal/.

При отсутствии работающего gnome-terminalвам потребуется использовать альтернативный терминал (, например xterm), если он установлен, или Command Runner, который должен быть доступен с помощью сочетания клавиш Alt + F2

Затем введите

dconf reset -f /org/gnome/terminal/
1
05.05.2020, 19:41
2 ответа

Предположим, что используется недавний дистрибутив, bpftraceпригодится. Для этого в Debian 10 необходимо его установить:

apt install bpftrace

Затем с помощью synsnoop.btпрослушивайте системные -широкосистемные *системные вызовы, связанные с синхронизацией:

# syncsnoop.bt
Attaching 7 probes...
Tracing sync syscalls... Hit Ctrl-C to end.
TIME      PID    COMM             EVENT
03:15:35  443    dhclient         tracepoint:syscalls:sys_enter_fsync
^C

This tool works by tracing sync(2) variants via tracepoints: sync(2), syncfs(2), fsync(2), fdatasync(2), sync_file_range(2), and msync(2). The overhead of this tool is expected to be negligible, as the rate of sync(2) is typically very infrequent.

Или с помощью bpftraceязыка сценариев:

#./sync.bt 
Attaching 7 probes...
Tracing sync syscalls... Hit Ctrl-C to end.
TIME      PID    COMM             EVENT
08:09:53 443    dhclient         tracepoint:syscalls:sys_enter_fsync
^C

sync.btисточник для регистрации всех синхронизации связанных системных вызовов:

#!/usr/bin/bpftrace
BEGIN {
  printf("Tracing sync syscalls... Hit Ctrl-C to end.\n"); 
  printf("%-9s %-6s %-16s %s\n", "TIME", "PID", "COMM", "EVENT");
}

tracepoint:syscalls:sys_enter_sync, 
tracepoint:syscalls:sys_enter_syncfs, 
tracepoint:syscalls:sys_enter_fsync, 
tracepoint:syscalls:sys_enter_fdatasync, 
tracepoint:syscalls:sys_enter_sync_file_range, 
tracepoint:syscalls:sys_enter_msync
{
  time("%H:%M:%S ");
  printf("%-6d %-16s %s\n", pid, comm, probe);
}

PS со страниц 293 и 294 книги Брендана Грегга BPF Performance Tools

2
28.04.2021, 23:16

Помимо принятого ответа, это также может сделать auditd , как упоминал @Gilles в комментарии.

Auditd можно контролировать с помощью команды auditctl и

auditctl -S fsync,fdatasync,...

ограничивает регистрируемые системные вызовы нужными нам.

0
28.04.2021, 23:16

Теги

Похожие вопросы