¿Puedo usar GNU ps en OS X?

18

Podemos instalar GNU coreutils a través de brew. Pero no hay psen las utilidades . ¿Podemos usar gnu psen OS X?

Me gustaría usar GNU psya que tiene más opciones y características.

Sanghyun Lee
fuente
¿Has intentado ejecutar pso ps -efen una terminal en OSX? funciona para mí en OSX 10.7.5 sin modificaciones, en dos máquinas diferentes. Está en / bin / ps
jammypeach
Sí, lo sé, quería usar GNU psporque tiene más opciones y características.
Sanghyun Lee
ah OK, lo siento, no me di cuenta de eso por la pregunta como se dijo. Sugeriría incluir eso en algún lugar, en caso de que alguien más piense lo mismo que yo - buena suerte con la búsqueda de una solución
jammypeach
Gracias por la sugerencia. Agregué más explicaciones sobre eso.
Sanghyun Lee

Respuestas:

22

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 -oopción es razonablemente confiable en todas las plataformas, especialmente si se refiere al estándar UNIX para nombres de columna para usar.

Aleatorio832
fuente
¿Es el /procsistema 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?
Tanner Swett
1
@ TannerSwett No lo creo. Antes de que se implementara / proc, el comando ps en Linux funcionaba leyendo desde / dev / kmem y / dev / swap.
Random832
9

No, ya que no existe. En cuanto a por qué no hay psun coreutilspaquete 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 psgreppara comportarse como lo psharí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.

pgreptambié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.

njboot
fuente
2
pgreptambién forma parte de versiones recientes de OS X
nohillside
@patrix agh! buen punto, confirmado:type -a pgrep pgrep is /usr/local/bin/pgrep pgrep is /usr/bin/pgrep
njboot
Como comentario aparte, como se menciona aquí , el proctoolspaquete de MacPorts o Homebrew proporciona pgrepy pkillque es lo que personalmente estaba buscando cuando aparecí aquí.
TheDudeAbides
3

psno 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 pstreeque puede darle excelentes vistas de árbol, y también htopes otro buen visor de procesos.

Thomas
fuente