Возможно ли отслеживать в режиме реального времени все системные вызовы под Linux?

Например, в linux-машине так много процессов. Каждый из них может использовать системный вызов, но обычно используются немногие. Что ж, есть инструмент или способ показать, когда используется системный вызов и какой процесс связан с ним?


person user840718    schedule 05.08.2012    source источник
comment
en.wikipedia.org/wiki/Ptrace   -  person Karoly Horvath    schedule 06.08.2012
comment
ptrace() сам по себе является системным вызовом, а не инструментом.   -  person favoretti    schedule 06.08.2012
comment
Я не знаю, как отслеживать svc для всех процессов (для всей системы), но strace — мой любимый инструмент для отслеживания конкретного процесса.   -  person Kenji Noguchi    schedule 06.08.2012
comment
@favoretti: да. если вы нажмете на ссылку, вы увидите, что это самое первое предложение.   -  person Karoly Horvath    schedule 06.08.2012


Ответы (2)


Вы можете использовать различные инструменты, такие как strace, ltrace и многие другие, хотя я не уверен, что вы хотите отслеживать все процессы одновременно.

Обычно вы подключаетесь к одному интересующему процессу и следите за его системными вызовами.

person favoretti    schedule 05.08.2012
comment
Ну, я могу использовать strace для одного процесса. А если пользователь создает новый файл, могу ли я увидеть системный вызов, связанный с его созданием с помощью этого метода? - person user840718; 06.08.2012
comment
это не пользователь, а процесс, который действительно создает этот файл. если вы подключены к этому процессу, то да... если вы хотите только мониторить FS, для этого есть другие инструменты. - person Karoly Horvath; 06.08.2012
comment
Да, моя цель - мониторинг ФС в режиме реального времени, за конкретными файлами, а не за процессом. Итак, я думаю о системном вызове, потому что это основная инструкция, которую запускает ядро. - person user840718; 06.08.2012
comment
Затем вы можете использовать lnotify или что-то еще более причудливое, например, монитор изменений splunk FS (docs.splunk.com/Documentation/Splunk/latest/Data/) :) - person favoretti; 06.08.2012
comment
@ user840718, тогда вам следует использовать systemtap и oprofile, которые могут отслеживать и профилировать всю систему, а не только один процесс, как это делает strace. - person nos; 06.08.2012

Вы можете использовать подсистему аудита ядра Linux.

Например, чтобы увидеть все системные вызовы, сделанные программой sshd (pid - 12345):

# auditctl -a entry,always -S all -F pid=12345
person Ilya Matveychikov    schedule 06.08.2012