Мы можем установить GNU coreutils через brew. Но нет psв утиле . Можем ли мы использовать GNU psв OS X?
Я хотел бы использовать GNU, так psкак он имеет больше опций и возможностей.
psпотому что он имеет больше опций и возможностей.
Мы можем установить GNU coreutils через brew. Но нет psв утиле . Можем ли мы использовать GNU psв OS X?
Я хотел бы использовать GNU, так psкак он имеет больше опций и возможностей.
psпотому что он имеет больше опций и возможностей.
Ответы:
Портативной программы для PS не существует. Команда ps, доступная в linux, как уже упоминалось, из пакета "procps". Причина, по которой это нельзя перенести на OSX, состоит в том, что ядра Linux и OSX не предоставляют эту информацию одинаково. Linux использует псевдофайловую систему в / proc, тогда как OSX использует функцию sysctl. Другие системы могут использовать любой механизм, но предоставлять данные в другом формате, или могут потребовать, чтобы такие программы, как ps, читали непосредственно из памяти ядра.
В общем, нет никакого стандарта для того, как информация о процессе доступна для таких программ, как ps и top; поэтому программа должна быть разработана для конкретной операционной системы. Если в OSX ps отсутствует определенная функция, вам нужно будет найти другую программу, которая может это сделать, или написать ее самостоятельно (см. Руководство по sysctl, в частности KERN_PROC в качестве отправной точки) или изменить существующие ps. Команда, чтобы добавить функцию.
С другой стороны, если вы можете получить то, что вам нужно, анализируя выходные данные самой команды ps, вы можете написать переносимую программу - выходные данные с этой -oопцией достаточно надежны для всех платформ, особенно если вы ссылаетесь на стандарт UNIX для имена столбцов для использования.
/procфайловая система единственным методом, который ядро Linux предоставляет для получения списка процессов, или существуют также отдельные системные вызовы, которые предоставляют эту информацию?
Нет - поскольку его не существует. Относительно того, почему нет встроенного psв coreutilsпакет GNU , смотрите этот ответ на форумах Unix & Linux.
Лучшая альтернативная формула, доступная через Homebrew psgrep:
psgrep - это небольшой скрипт оболочки Bash, который выполняет поиск в списке процессов (полученном с помощью ps (1) ), используя его мощную утилиту grep (1) .
Тем не менее, вы можете использовать , psgrepчтобы вести себя как OS иксы psбудет. Например:
OPTIONS
-a Search the process list using BSD's "ps aux" format. This option
includes all users' processes in the search.
-b Search the process list using BSD's "ps ux" format (default).
This option only includes the running user's processes.
pgrepтакже доступен через brew, что синтаксически ближе ps, но менее эффективно, чем psgrep:
psgrep (1) более полезен, чем pgrep (1), потому что он не только может искать в списке процессов и возвращать PID, он может давать более полезную информацию, такую как его UID, GID, использование памяти / ЦП, точность и все остальное, что поддерживается по пс.
Весь акцент мой.
pgrepтакже является частью последних версий OS X
type -a pgrep pgrep is /usr/local/bin/pgrep pgrep is /usr/bin/pgrep
proctoolsпакет либо из MacPorts или Homebrew обеспечивает pgrepи pkillчто то , что я лично искал, когда я появился здесь.
psне является частью ядра GNU Coreutils согласно Википедии . Версия, которая поставляется с моим дистрибутивом Linux, похоже, от procps , но, похоже, в homebrew нет формулы для этого. Существуют формулы, для pstreeкоторых можно получить отличные представления дерева, а также htopеще один хороший просмотрщик процессов.
psилиps -efв терминале на OSX? у меня работает на OSX 10.7.5 без изменений, на двух разных машинах. Это в / bin / ps