Эквивалент Process Monitor для Linux?

26

Есть ли Unix / Linux-эквивалент Process Monitor , будь то GUI или CUI?

Если это имеет значение, я смотрю на Ubuntu, но если есть эквивалент для других систем (Mac, другие варианты Linux, такие как Fedora и т. Д.), То знание любой из них также будет полезно.

Редактировать:

Process Monitor предназначен для мониторинга системных вызовов (таких как создание или запись файлов), а Process Explorer - для мониторинга состояния процесса (который похож на System Monitor). Я прошу о первом, а не о втором. :-)

Mehrdad
источник

Ответы:

12

Консоль находится в режиме ожидания для этого top, но есть альтернативы, такие как мой любимый, htopкоторые дают вам немного больше гибкости отображения и позволяют вам еще несколько операций над процессами.

Менее интерактивное представление, которое лучше использовать в сценариях, - это psпрограмма и все ее родственники.

Редактировать: Исходя из вашего уточненного вопроса, вы можете заметить, что straceобрабатывает системные вызовы, выполняемые данным процессом, включая все операции чтения-записи и вызовы функций os. Вы можете активировать его в командной строке перед тем, как программу, которую вы хотите отслеживать или присоединить к запущенному процессу, нажав sна процесс, выбранный в htop.

Калеб
источник
4
Я считаю, topчто это эквивалент Process Explorer , а не Process Monitor , верно?
Мердад
Как насчет того, чтобы запустить его и изучить страницу руководства. Я прочитал список функций, который вы связали с монитором процесса, и он звучал так, будто htopохватывал все детали, кроме мониторинга последовательности загрузки. В лучшем случае он может быть активирован в screen/ tmuxиногда частично через загрузочный цилиндр Linux.
Калеб
В свете ваших других комментариев, вы также можете искать strace, что вы можете активировать htop, нажав sна процесс или вручную из командной строки, когда вы запускаете что-то или с идентификатором процесса.
Калеб
12

Дедушка всех мониторов процессов есть top, и многие инструменты мониторинга системы называются top. Например, iotopнужно следить за дисковым вводом / выводом, atopза кучей системных ресурсов, powertopза энергопотреблением.

Если вам нужна более подробная информация, по умолчанию она не отслеживается. Чтобы посмотреть, что делает конкретный процесс , обратитесь straceк нему. Например, если вас интересует только доступ к файловой системе:

strace -s9999 -efile command_name    # trace a program during its whole execution
strace -s9999 -efile -p1234          # trace a running program with the given PID

straceспецифичен для Linux, но другие системы имеют аналогичный инструмент: trussв Solaris ktraceили dtraceв * BSD и т. д.

Чтобы посмотреть, что происходит с конкретным файлом или в определенном каталоге или дереве каталогов, используйте средство inotify .

inotifywait -m .

Опять же, средство является специфическим для Linux, но большинство других устройств имеют аналогичную систему, например, kqueue под * BSD и FAM (изначально от SGI, но теперь доступны как API на многих системах).

Для просмотра всех системных вызовов в Linux вы можете использовать подсистему аудита . Это относительно недавно и не так много литературы по этой теме; найдите auditctlили прочитайте auditctlсправочную страницу . На этом сайте есть несколько примеров: отслеживание доступа к файлам , отслеживание выполнения процесса .

Жиль "ТАК - перестань быть злым"
источник
Вы уверены, что имеете в виду эквивалент Process Monitor , а не Process Explorer ?
Мердад
@ Mehrdad: Я вижу, я использовал имя и память своего инструмента, который я использовал в Windows (который фактически является Process Explorer), а не фактическое описание. Всегда опасно просить эквивалент конкретной программы, лучше попросить программу с определенными функциями.
Жиль "ТАК - перестань быть злым"
Спасибо. iotop -o -b -Pпоказывает мне, какие процессы выполняют операции ввода-вывода диска
bartolo-otrit
8

Вы можете взглянуть на lsofи strace. Монитор процессов Sysinternal - это, на самом деле, Filemon и Regmon в сочетании с некоторыми дополнительными улучшениями. Команда topбольше похожа на Process Explorer.

Омега
источник
4

Вы, вероятно, ищете sysdig

Например:

sysdig -A -c echo_fds
Singlet
источник
3

Я очень опаздываю, чтобы ответить на этот вопрос, но я запустил проект, цель которого - сделать именно то, что вы ищете. Посмотрите на это здесь: https://github.com/alexandernst/monks

alexandernst
источник
2

Я не использовал этот Process Monitor, но, насколько я могу судить, он такой же, как gnome-system-monitorв системе Gnome. Если вы используете KDE, они, вероятно, имеют нечто подобное.

Кит
источник
Нет, они разные. Process Monitor фактически перехватывает системные вызовы, а не отображает информацию о процессе. (Однако то, на что вы ссылаетесь, выполняется Process Explorer.)
Mehrdad
О, я обычно использую инструмент CLI vmstat для подобных вещей. Но это для всей системы, а не для процесса.
Кит
1

dtrace4linux позволяет отследить некоторые интересные кусочки ядра. Хотя он выглядит более мощным, чем sysdig, к сожалению, он не так хорошо себя ведет.

Руи Ф Рибейро
источник