unix - sacar - ver procesos en ubuntu
Cómo obtener pid dado el nombre del proceso (3)
Hola, he buscado en varios foros y aquí también, pude encontrar algunas respuestas para Linux y Mac, pero no puedo encontrar una solución para Unix y especialmente Korn Shell.
Cómo obtener el nombre del proceso (nombre del comando) de la ID del proceso (pid)
Debajo de la referencia encontré de SO This and this one
Probé debajo del comando
ps -eaf | awk ''{ print substr($0, index($0, $9)) }''
El comando anterior está fallando en un punto donde se da la HORA en lugar de Mes y Fecha (porque en este caso solo habrá 8 columnas en la cadena)
Cualquier sugerencia ayudaría.
Creo que es más fácil usar pgrep
$ pgrep bluetoothd
441
De lo contrario, puedes usar awk
:
ps -ef | awk ''$8=="name_of_process" {print $2}''
Por ejemplo, si ps -ef
tiene una línea como:
root 441 1 0 10:02 ? 00:00:00 /usr/sbin/bluetoothd
Entonces ps -ef | awk ''$8=="/usr/sbin/bluetoothd" {print $2}''
ps -ef | awk ''$8=="/usr/sbin/bluetoothd" {print $2}''
devuelve 441
.
En ksh pgrep no se encuentra. y la otra solución está fallando en el caso de que se muestre a continuación el comando ps jaggsmca325 7550 4752 0 Sep 11 pts / 44 0:00 sqlplus dummy_user / dummy_password @ dummy_schema
Revisemos la última columna ( $NF
), sin importar su número:
$ ps -ef | awk ''$NF=="/usr/sbin/bluetoothd" {print $2}''
441
Si no deseas unir cadenas exactas, puedes usar ~
lugar:
$ ps -ef | awk ''$NF~"bluetooth" {print $2}''
441
1906
Si tu ps | awk
ps | awk
solución ps | awk
está fallando porque la salida de ps
no es lo que desea, entonces hágalo así:
ps -eaf -o pid,cmd | awk ''/regex-to-match-command-name/{ print $1 }''