Me gustaría obtener una lista de todas las aplicaciones que se ejecutan actualmente en mi máquina mediante la línea de comandos. Debería ser similar a lo que obtiene cuando abre el Monitor de actividad y elige guardar la lista.
Noté que el ps -a
comando 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 del proceso. Solo quiero el nombre del proceso, tal como aparece en el Monitor de actividad. Por ejemplo, ps
hace lanchd
que se muestre como /sbin/launchd
en lugar de como se muestra en el Monitor de actividad (es decir, simplemente 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.
ps -axc -o comm
-a
muestra los procesos de todos los usuarios (o raíz)-x
incluye procesos que no tienen una terminal de control-o comm
salidas rutas de comandos o nombres-c
-o comm
solo hace nombres de salidatell app "System Events" to name of application processes
enumeraría solo los procesos iniciados desde un paquete de aplicaciones.
-bash
, y no muestra un mensaje de error (lo cual es bueno). Además, utiliza un comando más simple, gracias.
sort
xargs
Comando correcto, banderas incorrectas.
ps -Ao comm
si solo desea nombres de proceso.ps -Ao command
si desea nombres de procesos con argumentos.launchd
en ps
, se muestra como /sbin/launchd
. No es un problema para este proceso, pero es un problema para aquellos que están anidados en muchas carpetas. ¿Hay alguna forma de obtener solo el nombre del proceso sin su ruta?Mencionaste que te gustaría guardarlo en un archivo. En el caso más simple (el que más le preocupa), use
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 emitiendo ps ax
se imprimirá en la pantalla.
Sugerencia: si no tiene ganas de escribir un directorio completo, arrastre una carpeta a la terminal para obtener la ruta y complete manualmente con el nombre del archivo.
En caso de que desee algunas de las otras columnas en algún momento... Además, consulte la página de manual de ps escribiendo man ps
en la línea de comando y busque 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
Usar
# 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
EDITAR
Para imprimir solo el comando, probablemente haya enfoques más duraderos, pero en caso de apuro, simplemente haría lo que sigue. Probablemente notarás un poco de cruft cerca del final relacionado con cadenas que no fueron pensadas para basename
(como -bash
), pero el resto de lo que quieres estará allí con este rapidito.
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 sh
con una serie de comandos a continuación.
/sbin/launchd
, solo debería generar launchd
.ps ax
a basename
via xargs
. Ver edición para más detalles.sort
también. Así que el comando final es:ps ax -o comm | xargs -I % basename % | sort
charlie parker