ver sacar procesos proceso para desde conocer como comandos buscar unix ksh pid ps

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


Puede usar pidof para obtener todos los ID de los procesos en ejecución con el nombre p_name
pidof p_name | tr '' '' ''/n'' p_name | tr '' '' ''/n'' (para un listado vertical)
pkill p_name mata todos los procesos con el nombre p_name
NB asegúrate de tener el permiso para matarlos a todos :)


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 }''