ver procesos mac macos bash shell process pid

macos - procesos - ¿Cómo obtener el PID de un proceso dando el nombre del proceso en Mac OS X?



kill process mac terminal (8)

Estoy escribiendo un script para monitorear la CPU y el MEM de cualquier proceso dado. Para eso necesito enviar el nombre del proceso para ser monitoreado como un argumento de línea de comando. Por ejemplo.

./monitorscript <pname>

Necesito obtener el pid del proceso en el script para poder usar un ps -p <pid> dentro.

¿Cómo obtengo el pid de un proceso dado su nombre de proceso?

Entiendo que puede haber múltiples procesos en el mismo nombre. Solo quiero sacar el primer proceso de esa lista.


¿Por qué no ejecuta TOP y usa las opciones para ordenar por otras métricas, que no sean PID? ¿Como el PID más usado de la CPU / MEM?

top -o cpu <--- ordena todos los procesos por CPU Uso


Esta solución coincide con el nombre del proceso más estrictamente:

ps -Ac -o pid,comm | awk ''/^ *[0-9]+ Dropbox$/ {print $1}''

Esta solución tiene las siguientes ventajas:

  • ignora argumentos de línea de comandos como tail -f ~/Dropbox
  • ignora los procesos dentro de un directorio como ~/Dropbox/foo.sh
  • ignora procesos con nombres como ~/DropboxUID.sh

Este es el comando más corto que pude encontrar que hace el trabajo:

ps -ax | awk ''/[t]he_app_name/{print $1}''

Poner corchetes alrededor de la primera letra evita que awk encuentre el proceso de awk.


La respuesta anterior era en su mayoría correcta, solo necesitaba algunos ajustes para los diferentes parámetros en Mac OSX.

ps -A | grep -m1 firefox | awk ''{print $1}''


Prueba este:

echo "$(ps -ceo pid=,comm= | awk ''/firefox/ { print $1; exit }'')"

El comando ps produce un resultado como este, con el PID en la primera columna y el nombre ejecutable (solo) en la segunda columna:

bookworm% ps -ceo pid=,comm= 1 launchd 10 kextd 11 UserEventAgent 12 mDNSResponder 13 opendirectoryd 14 notifyd 15 configd

... que awk procesa, imprime la primera columna (pid) y sale después de la primera coincidencia.


Puede instalar pidof con Homebrew :

brew install pidof pidof <process_name>


Puede usar el comando pgrep como en el siguiente ejemplo

$ pgrep Keychain/ Access 44186


Puedes intentar esto

pid=$(ps -o pid=,comm= | grep -m1 $procname | cut -d'' '' -f1)