2013-08-17 07:12:47 +0000 2013-08-17 07:12:47 +0000
280
280

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?

Respuestas (10)

308
308
308
2013-08-17 08:21:51 +0000

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

53
53
53
2013-08-17 08:04:46 +0000

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
15
15
15
2015-04-18 02:16:04 +0000

Para obtener la ruta del programa usando un cierto pid puedes usar:

ps ax|egrep "^ [PID]"

alternativamente puedes usar:

ps -a [PID]

8
8
8
2017-05-27 04:28:29 +0000

Puedes usar pmap. Estoy buscando el PID 6649. Y cortando los detalles del proceso extra.

$ pmap 6649 | head -1
6649: /usr/lib64/firefox/firefox
8
8
8
2016-05-06 00:14:20 +0000
# 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
3
3
3
2015-08-30 23:31:50 +0000

Similar a la respuesta de Slhck, pero confiando en operaciones de archivo en lugar de invocaciones de comandos:

MYPID=1
cat "/proc/$MYPID/comm"
3
3
3
2013-08-17 09:32:59 +0000

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
2
2
2
2016-02-23 21:47:17 +0000

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.

0
0
0
2016-11-21 09:48:46 +0000

Encuentro el método más fácil de estar con el siguiente comando:

ps -awxs | grep pid
0
0
0
2016-12-26 15:08:43 +0000

hizo un simple script para encontrar el PID y usarlo dentro de los scripts bash… ¡Utilícelo con cuidado!

Captura de pantalla:

http://pastebin.com/Cm9YH67U

André