Как использовать sysctl в вариантах UNIX, например. macOS, чтобы прочитать информацию, обычно находящуюся в /proc/self в Linux?

Вы также можете воспользоваться GNU grep с его регулярными выражениями Perl. Это выведет строку, содержащую строку main ()в любом месте первых 10 строк входного файла.

Опция -zпозволяет обрабатывать файл как одну большую строку (, если она не содержит символов NUL ), с которыми должен работать grep. -Pвключает Perl-режим grep, -oпоказывает совпадающую часть, -hскрывает имя файла от отображения рядом с соответствующей строкой, а -lотображает только имя файла.

Если вам нужно и имя файла, и соответствующая строка:

grep -HPoz  '\A(.*\n){0,9}\K[^\n]*main\(\)[^\n]*\n' file.txt

только совпадающая строка:

grep -hPoz '\A(.*\n){0,9}\K[^\n]*main\(\)[^\n]*\n' file.txt

(-hнеобходимо только при наличии более одного файла)

только имя файла:

grep -Pozl '\A(.*\n){0,9}\K[^\n]*main\(\)[^\n]*\n' file.txt

Чтобы запустить текущий каталог, но без рекурсии:(ofc, параметры grep должны быть предоставлены в соответствии с требованиями, как показано выше)

find. ! -name. -prune -type f \
  -exec grep -HPoz '\A(.*\n){0,9}\K[^\n]*main\(\)[^\n]*\n' {} +
2
29.08.2019, 22:47
1 ответ

Ваше наблюдение, что sysctl преимущественно содержит системные -широкие параметры подходят. Это также следует из названия sysctl(, которое предполагает SYStem ConTroL ), и на странице руководства описание "sysctl - get or set kernel state."

Некоторые системы BSD предлагают дополнительную procfsподдержку файловой системы, которую можно смонтировать в /proc, например FreeBSD:

# mount -t procfs procfs /proc

Это обеспечивает некоторые функциональные возможности, но, возможно, чаще всего используется в целях совместимости при запуске бинарных файлов Linux в режиме эмуляции, а не для окончательного запроса статистики времени выполнения -конкретных собственных процессов BSD. К сожалению, насколько мне известно, OS X не поддерживает файловые системы procfs.

И вообще, системы BSD не используют /proc, поэтому ответ на вопрос, что использовать для замены конкретного запроса на основе /proc-, зависит от конкретного запроса. Учитывая недавнее редактирование вашего сообщения, вы можете найти эту команду полезной для отображения использования памяти для определенного процесса:

$ sudo vmmap $$
0
27.01.2020, 22:24

Теги

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