Obtener una lista de los procesos que se están ejecutando actualmente

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 -acomando 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, pshace lanchdque se muestre como /sbin/launchden 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.

Solo quiero mis procesos... ¿cómo hago eso?

Respuestas (3)

ps -axc -o comm
  • -amuestra los procesos de todos los usuarios (o raíz)
  • -xincluye procesos que no tienen una terminal de control
  • -o commsalidas rutas de comandos o nombres
  • -c-o commsolo hace nombres de salida

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

Esto me da la misma información que la respuesta de ephsmith, pero excluye -bash, y no muestra un mensaje de error (lo cual es bueno). Además, utiliza un comando más simple, gracias. sortxargs
@Senseful, lo siento :(. Al menos fui de alguna ayuda para abordar su necesidad de guardarlo en un archivo.
Solo quiero mis procesos... ¿cómo hago eso?

Comando correcto, banderas incorrectas.

  • Úselo ps -Ao commsi solo desea nombres de proceso.
  • Úselo ps -Ao commandsi desea nombres de procesos con argumentos.
El primer comando aún genera la ruta completa del proceso, lo que hace que se corte a lo largo de la ventana de mi terminal. Por ejemplo, en Monitor de actividad veo launchden 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?
Ah, sí. Dijiste "me gusta el Monitor de actividad", pero no pensé que importaría. Como veo que tu pregunta ya ha sido respondida, lo dejaré así.
Solo quiero mis procesos... ¿cómo hago eso?

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 axse 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 psen 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 shcon una serie de comandos a continuación.

El comportamiento de votación positiva en AskDifferent es extraño. Una respuesta que no responde a la pregunta tiene una clasificación de votos más alta. Ni siquiera se abordó el guardado en un archivo :( y los argumentos son incorrectos para el resultado que solicitó el OP.
Gracias por la respuesta, lo probé pero aún muestra la ruta completa al proceso. Estoy buscando una solución que solo genere el nombre del proceso y no su ruta. Por ejemplo, en lugar de generar /sbin/launchd, solo debería generar launchd.
Bueno. No hay problema. Simplemente canalice la salida de ps axa basenamevia xargs. Ver edición para más detalles.
¡Genial gracias! Para que conste, terminé canalizándolo sorttambién. Así que el comando final es:ps ax -o comm | xargs -I % basename % | sort