Si conozco el número PID de un proceso, ¿cómo puedo obtener su nombre?
Si tengo el número PID de un proceso (en una máquina UNIX), ¿cómo puedo averiguar el nombre de su proceso asociado?
¿Qué tengo que hacer?
Si tengo el número PID de un proceso (en una máquina UNIX), ¿cómo puedo averiguar el nombre de su proceso asociado?
¿Qué tengo que hacer?
En todos los sistemas compatibles con POSIX, y con Linux, se puede usar ps
:
ps -p 1337 -o comm=
Aquí, el proceso es seleccionado por su PID con -p
. La opción -o
especifica el formato de salida, comm
significa el nombre del comando.
Ver también: ps
- Las especificaciones de la base del grupo abierto, edición 6
Puedes encontrar el nombre del proceso o el comando usado por el proceso-id o pid de
/proc/pid/cmdline
haciendo
cat /proc/pid/cmdline
Aquí pid es el pid para el que quieres encontrar el nombre Por ejemplo:
# ps aux
................
................
user 2480 0.0 1.2 119100 12728 pts/0 Sl 22:42 0:01 gnome-terminal
................
................
Para encontrar el nombre del proceso usado por pid 2480 puedes usar
# cat /proc/2480/cmdline
gnome-terminal
Para obtener la ruta del programa usando un cierto pid puedes usar:
ps ax|egrep "^ [PID]"
alternativamente puedes usar:
ps -a [PID]
Puedes usar pmap. Estoy buscando el PID 6649. Y cortando los detalles del proceso extra.
$ pmap 6649 | head -1
6649: /usr/lib64/firefox/firefox
# ls -la /proc/ID_GOES_HERE/exe
Ejemplo:
# ls -la /proc/1374/exe
lrwxrwxrwx 1 chmm chmm 0 Mai 5 20:46 /proc/1374/exe -> /usr/bin/telegram-desktop
Similar a la respuesta de Slhck, pero confiando en operaciones de archivo en lugar de invocaciones de comandos:
MYPID=1
cat "/proc/$MYPID/comm"
También puedes usar awk en combinación con ps
ps aux | awk '$2 == PID number for a process { print $0 }'
ejemplo:
root@cprogrammer:~# ps aux | awk '$2 == 1 { print $0 }'
root 1 0.0 0.2 24476 2436 ? Ss 15:38 0:01 /sbin/init
para imprimir HEAD LINE puedes usar
ps --headers aux |head -n 1 && ps aux | awk '$2 == 1 { print $0 }'
(or)
ps --headers aux |head -n 1; ps aux | awk '$2 == 1 { print $0 }'
root@cprogrammer:~# ps --headers aux |head -n 1 && ps aux | awk '$2 == 1 { print $0 }'
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.2 24476 2436 ? Ss 15:38 0:01 /sbin/init
Sorprendentemente, nadie ha mencionado la opción -f (comando completo) para ps. Me gusta usarla con -e (todo) y pipetear los resultados a grep para poder estrechar mi búsqueda.
ps -ef | grep <PID>
Esto también es muy útil para ver los comandos completos que alguien está ejecutando y que están tomando muchos recursos en su sistema. Esto te mostrará las opciones y argumentos que se pasan al comando.
Encuentro el método más fácil de estar con el siguiente comando:
ps -awxs | grep pid
hizo un simple script para encontrar el PID y usarlo dentro de los scripts bash… ¡Utilícelo con cuidado!
Captura de pantalla:
André