Podemos instalar GNU coreutils a través de brew
. Pero no hay ps
en las utilidades . ¿Podemos usar gnu ps
en OS X?
Me gustaría usar GNU ps
ya que tiene más opciones y características.
ps
porque tiene más opciones y características.
Podemos instalar GNU coreutils a través de brew
. Pero no hay ps
en las utilidades . ¿Podemos usar gnu ps
en OS X?
Me gustaría usar GNU ps
ya que tiene más opciones y características.
ps
porque tiene más opciones y características.
Respuestas:
No hay un programa ps portátil. El comando ps disponible en Linux es, como otros han mencionado, del paquete "procps". La razón por la cual esto no se puede portar a OSX es porque los núcleos Linux y OSX no exponen esta información de la misma manera. Linux usa un pseudo-sistema de archivos en / proc, mientras que OSX usa la función sysctl. Otros sistemas pueden usar cualquiera de los mecanismos pero proporcionar datos en un formato diferente, o pueden requerir programas como ps para leer directamente desde la memoria del kernel.
En general, no existe un estándar sobre cómo la información del proceso está disponible para programas como ps y top; entonces el programa tiene que estar diseñado para un sistema operativo específico. Si falta una característica específica del OSX ps, tendrá que buscar otro programa que pueda hacerlo, o escribir uno usted mismo (consulte el manual de sysctl, en particular KERN_PROC como punto de partida), o modifique el ps existente comando para agregar la función.
Alternativamente, si puede obtener lo que necesita analizando la salida del comando ps, puede escribir un programa portátil: la salida con la -o
opción es razonablemente confiable en todas las plataformas, especialmente si se refiere al estándar UNIX para nombres de columna para usar.
/proc
sistema de archivos el único método que proporciona el kernel de Linux para obtener una lista de procesos, o también hay llamadas separadas al sistema que proporcionan esa información?
No, ya que no existe. En cuanto a por qué no hay ps
un coreutils
paquete incorporado en GNU , vea esta respuesta en los foros de Unix y Linux.
La mejor fórmula alternativa disponible a través de Homebrew es psgrep
:
psgrep es un pequeño script de shell Bash que busca en la lista de procesos (según lo obtenido por ps (1) ) usando la increíble utilidad grep (1) para obtener su poder.
Dicho esto, todavía puede usar psgrep
para comportarse como lo ps
haría OS X's . Por ejemplo:
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
también está disponible a través brew
, que es sintácticamente más cerca ps
, pero menos eficiente que psgrep
:
psgrep (1) es más útil que pgrep (1) porque no solo puede buscar en la lista de procesos y devolver un PID, sino que también puede proporcionar información más útil, como su UID, GID, uso de memoria / CPU, amabilidad y cualquier otra cosa compatible por ps.
Todo el énfasis es mío.
pgrep
también forma parte de versiones recientes de OS X
type -a pgrep
pgrep is /usr/local/bin/pgrep
pgrep is /usr/bin/pgrep
proctools
paquete de MacPorts o Homebrew proporciona pgrep
y pkill
que es lo que personalmente estaba buscando cuando aparecí aquí.
ps
no es parte de los coreutils de GNU según Wikpedia . La versión que viene con mi distribución de Linux parece ser de procps , pero parece que no hay una fórmula para ello en homebrew. Hay fórmulas para las pstree
que puede darle excelentes vistas de árbol, y también htop
es otro buen visor de procesos.
ps
ops -ef
en una terminal en OSX? funciona para mí en OSX 10.7.5 sin modificaciones, en dos máquinas diferentes. Está en / bin / ps