Obtención de una lista de los procesos actualmente en ejecución

4

Me gustaría obtener una lista de todas las aplicaciones que se ejecutan actualmente en mi máquina usando la línea de comandos. Debería ser similar a lo que obtienes cuando abres el Monitor de actividad y eliges guardar la lista.

Noté que el comando ps -a hace algo similar, pero corta los nombres de los procesos.

Solo me interesa el nombre de los procesos, por lo que no necesito todas las columnas que genera el Monitor de actividad.

Actualización: Debería haber sido más claro ... No quiero que se muestre la ruta completa al proceso. Solo quiero el nombre del proceso, tal como aparece en el Monitor de actividad. Por ejemplo, ps hace que lanchd se muestre como /sbin/launchd en lugar de como se muestra en el Monitor de actividad (es decir, solo lanchd ). Esto es un problema porque los procesos que tienen rutas muy largas terminan siendo truncados (dependiendo del tamaño de la ventana de mi terminal), y ni siquiera puedo ver el nombre del proceso.

    
pregunta Senseful 23.06.2012 - 01:31

3 respuestas

2
ps -axc -o comm
  • -a muestra los procesos de todos los usuarios (o raíz)
  • -x incluye procesos que no tienen un terminal de control
  • -o comm genera rutas o nombres de comandos
  • -c hace que -o comm nombres de salida solamente

tell app "System Events" to name of application processes listaría solo los procesos lanzados desde un paquete de aplicaciones.

    
respondido por el user495470 24.06.2012 - 15:08
2

Comando derecho, banderas erróneas.

  • Use ps -Ao comm si solo quiere nombres de proceso.
  • Use ps -Ao command si desea procesar nombres con argumentos.
respondido por el bahamat 23.06.2012 - 02:17
2

Mencionó que le gustaría guardarlo en un archivo. En el caso más simple (el que más le preocupa), utilice

ps ax > /path/to/outfile.txt

que imprimirá una lista de todos los procesos en ejecución (con el nombre completo) en el archivo designado por la ruta. El ">" redirige la salida impresa (en modo de sobrescritura) al archivo. Simplemente emitir ps ax lo imprimirá en la pantalla.

Sugerencia: si no tienes ganas de escribir un directorio completo, arrastra una carpeta al terminal para obtener la ruta y completa manualmente el nombre del archivo

En caso de que termines, quisieras algunas de las otras columnas en algún momento ... Además, comprueba la página de manual de ps escribiendo man ps en la línea de comandos y mira otras opciones. Aquí hay otro ejemplo que imprime el uso de la CPU y la memoria para cada proceso (en porcentajes) seguido del comando (proceso):

ps ax -o %cpu -o %mem -o command > /path/to/outfile.txt

Utilizar

# Sort by cpu usage with the 'r' option
ps arx -o %cpu -o %mem -o command > /path/to/outfile.txt

# Sort by memory usage with the 'm' option
ps arm -o %cpu -o %mem -o command > /path/to/outfile.txt

EDIT

Para imprimir solo el comando, es probable que haya enfoques más duraderos, pero en un apuro solo haría lo que sigue. Probablemente notarás un poco de cruft cerca del final relacionado con las cadenas que no fueron hechas para basename (como -bash ), pero el resto de lo que quieras estará allí con esta rapidez.

ps ax -o comm | xargs -I % basename % > /path/to/outfile.txt

NOTA: Algunos procesos que se están ejecutando no son necesariamente nombres ejecutables. Podrían ser una llamada directa a sh con una serie de comandos que siguen.

    
respondido por el ephsmith 23.06.2012 - 08:21

Lea otras preguntas en las etiquetas