Si tengo el número PID para un proceso (en una máquina UNIX), ¿cómo puedo averiguar el nombre de su proceso asociado?
¿Que tengo que hacer?
ps -fp PID
mostrará el comando completo
Si tengo el número PID para un proceso (en una máquina UNIX), ¿cómo puedo averiguar el nombre de su proceso asociado?
¿Que tengo que hacer?
ps -fp PID
mostrará el comando completo
Respuestas:
En todos los sistemas compatibles con POSIX, y con Linux, puede usar ps
:
ps -p 1337 -o comm=
Aquí, el proceso se selecciona por su PID con -p
. La -o
opción especifica el formato de salida, es comm
decir , el nombre del comando.
Consulte también: ps
- Open Group Base Especificaciones, número 6
command
lugar lo arregla.
$ ps -p 1 -o comm=
init $ ps -p 1 -o command=
/ sbin / init; lo que significa que no se trata de 15 caracteres, tal vez solo el nombre del binario frente a su ruta completa.
comm
da el nombre del binario y command
devuelve el argumento 0
Puede encontrar el nombre del proceso o el comando utilizado por el id de proceso o pid de
/proc/pid/cmdline
haciendo
cat /proc/pid/cmdline
Aquí pid es el pid para el que desea 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 de proceso utilizado por pid 2480, puede usar
# cat /proc/2480/cmdline
gnome-terminal
Para obtener la ruta del programa usando un determinado pid puede usar:
ps ax|egrep "^ [PID]"
alternativamente puedes usar:
ps -a [PID]
ps -a
Enumere todos los procesos que están asociados con el terminal, no toma ninguna entrada.
ps
versión, procps version 3.2.7
funciona bien.
# 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
readlink /proc/1337/exe
. readlink: imprime enlaces simbólicos resueltos o nombres de archivos canónicos.
Puedes usar pmap. Estoy buscando el PID 6649. Y cortando los detalles adicionales del proceso.
$ pmap 6649 | head -1
6649: /usr/lib64/firefox/firefox
ps
comando todo lo que verá es justo java
, pero el resto de los parámetros pasados se mostrarán completamente con pmap
.
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 puede 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
ps ax | grep 1
y vea si realmente devuelve el init
proceso, por ejemplo. (En mi caso, devuelve 119 líneas, no deseable.)
ps aux | awk 'NR==1 || $2==PID'
, y no necesitamos decirlo {print $0}
porque es el valor predeterminado. Pero como comentaste, -p
es mejor de todos modos.
Similar a la respuesta de slhck , pero confiando en operaciones de archivo en lugar de invocaciones de comando:
MYPID=1
cat "/proc/$MYPID/comm"
cat /proc/1/comm
=> init, no / sbin / init. Su respuesta tiene la versión más larga incluida. Pero +1 de todos modos.
Sorprendentemente, nadie ha mencionado la opción -f (comando completo) para ps. Me gusta usarlo con -e (todo) y canalizar los resultados a grep para poder limitar 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 le mostrará las opciones y argumentos pasados al comando.
-e -f
están disponibles, grep
puede producir muchas coincidencias falsas, por ejemplo, grep 33
incluye pid = 933 o 339, ppid = 33 o 933 o 339, tiempo de uso de 33 segundos o 33 minutos, o nombre de programa o argumento que contiene 33, incluido el grep
propio. Todos (AFAIK) ps
tienen -p
, así que solo ps -fp 33
.
Encuentro el método más fácil para estar con el siguiente comando:
ps -awxs | grep pid
ps -p${pid}
, esto detectará muchos falsos positivos, incluido el grep
propio.
hizo un script simple para encontrar PID y usar dentro de los scripts de bash ...
¡úselo con precaución!
Captura de pantalla: http://pastebin.com/Cm9YH67U
André
ps
ols -l /proc/$PID/exe