¿Puedo usar GNU ps en OS X?

13

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.

    
pregunta Sanghyun Lee 19.05.2015 - 07:42

3 respuestas

19

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.

    
respondido por el Random832 19.05.2015 - 15:26
7

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.

    
respondido por el njboot 19.05.2015 - 11:23
3

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.

    
respondido por el Thomas 19.05.2015 - 10:21

Lea otras preguntas en las etiquetas