Podemos instalar GNU coreutils a través de brew
. Pero no hay ps
en los utils . ¿Podemos usar gnu ps
en OS X?
Me gustaría usar GNU ps
ya que tiene más opciones y características.
Podemos instalar GNU coreutils a través de brew
. Pero no hay ps
en los utils . ¿Podemos usar gnu ps
en OS X?
Me gustaría usar GNU ps
ya que tiene más opciones y características.
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 que esto no se puede portar a OSX es porque los kernels de 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 dos mecanismos pero proporcionan datos en un formato diferente, o pueden requerir que programas como ps lean directamente desde la memoria del kernel.
En general, no existe un estándar sobre cómo la información de proceso está disponible para programas como ps y top; por lo que el programa tiene que ser diseñado para un sistema operativo específico. Si falta una función específica en el OSX ps, tendrá que encontrar otro programa que pueda hacerlo o escribir uno usted mismo (consulte sysctl manual, en particular KERN_PROC como punto de partida), o modifique el comando ps existente 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 opción -o
es razonablemente confiable en todas las plataformas, especialmente si < a href="http://pubs.opengroup.org/onlinepubs/9699919799/utilities/ps.html"> consulte el estándar de UNIX para ver los nombres de las columnas a utilizar.
No, ya que no existe. En cuanto a por qué no hay ps
incorporado en el paquete coreutils
de GNU, consulte esta respuesta en el Unix & Foros de 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) por su poder.
Dicho esto, todavía puedes usar psgrep
para comportarte como lo haría ps
de OS X. 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 de brew
, que es sintácticamente más cerca de 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 como su UID, GID, uso de memoria / CPU, amabilidad, y cualquier otra cosa compatible con ps.
Todo énfasis mío.
ps
no es parte de los coreutils de GNU de acuerdo con 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 pstree
que pueden proporcionarte excelentes vistas de árbol, y también htop
es otro visor de proceso bueno.
Lea otras preguntas en las etiquetas macos command-line