
Tengo que contar la cantidad de procesos de emacs en la máquina que estoy usando de forma remota, usando el comando ps -Af. ¿Por dónde empiezo?
Respuesta1
ps -Af
no es el mejor enfoque.
La f
opción es superflua y podría generar falsos positivos si procesos que no son de emacs usan emacs o una cadena que lo contiene como uno de sus parámetros, sin mencionar el (improbable) caso de un usuario llamado emacs.
Sugeriría usar este comando más simple:
pgrep emacs | wc -l
Respuesta2
tu puedes hacerps -C emacs --no-heading | wc -l
ps -C command
procesos de salida por nombre de comando
EDITAR: ps --help
es muy interesante
Respuesta3
Como dijo Hennes, puedes usar un " ps -AF | grep emacs | wc -l
" para hacerlo. Pero también tendrás tu propio mando allí. Para deshacerse de estos comandos, puede usar " grep -v
" (o --inverted-match
) para filtrar los comandos que no desea contar. Entonces quedaría así:ps -AF | grep emacs | grep -v grep | wc -l
Respuesta4
Comience con los primeros principios.
Comience estableciendo qué hace exactamente el comando que se le pidió que utilice y cómo -Af
funcionan las opciones especificadas ( ). Para hacer esto lea man ps
:
-A Seleccionar todos los procesos.
-f Hacer listado en formato completo. Esta opción se puede combinar con muchas otras opciones de estilo UNIX para agregar columnas adicionales.
Entonces, su punto de partida es el resultado de todos los procesos que se ejecutan para su usuario, enumerados en formato completo. Ejecute el comando para ver el resultado completo antes de intentar realizar cualquier procesamiento:
ps -Af
Para contar emacs
los procesos, deberá canalizar la salida a través de una herramienta de filtrado para procesar la salida y/o contar las coincidencias respectivas. grep
es una buena opción, pero por eficiencia y simplicidad, usaría awk
:
ps -Af | awk '/emacs/ && !/awk/ { a++ } END { print a }'
Esto busca el patrón /emacs/
, excluye el patrón de la búsqueda en sí, !/awk/
incrementa las coincidencias { a++ }
y luego imprime el total { print a }
.
Esto solo requiere una única tubería y soluciona elegantemente el problema de no devolver el proceso de búsqueda en su recuento.