Мы можем установить 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