comm parece truncar el comando a 15 caracteres. Usar en su commandlugar lo arregla.
Nemo
1
[Ubuntu 14.04.4 LTS] $ 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.
OmarOthman
3
En realidad, commda el nombre del binario y commanddevuelve el argumento 0
robbie
45
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
Tenga cuidado: el OP menciona UNIX. No todos los UNIX implementan el Plan 9 como un archivo específico del proceso. Su respuesta generalmente solo se aplica a Linux.
slhck
3
Si bien eso es cierto, etiquetaron la pregunta "linux". Cualquier persona que está utilizando un sistema operativo UNIX basado en Linux no será muy acostumbrado a tener que modificar respuestas para adaptarse a sus necesidades
Andrew White
14
Para obtener la ruta del programa usando un determinado pid puede usar:
Este comando me ayudó más de lo que necesitaba, tengo la línea completa del proceso que comenzó. Dado un proceso Java, con el pscomando todo lo que verá es justo java, pero el resto de los parámetros pasados se mostrarán completamente con pmap.
Daniel Andrei Mincă
3
También puedes usar awk en combinación con ps
ps aux | awk '$2 == PID number for a process { print $0 }'
Esto es inestable ya que también seleccionaría procesos que incluyen el número en cualquier lugar de su comando. Pruebe ps ax | grep 1y vea si realmente devuelve el initproceso, por ejemplo. (En mi caso, devuelve 119 líneas, no deseable.)
slhck
1
@slhck Modificó la respuesta ... gracias por la información ... ps -p 1 -o comm = es la mejor opción para esta pregunta.
Gangadhar
No necesitamos dos ejecuciones para retener encabezados, en su lugar, use ps aux | awk 'NR==1 || $2==PID', y no necesitamos decirlo {print $0}porque es el valor predeterminado. Pero como comentaste, -pes mejor de todos modos.
dave_thompson_085
3
Similar a la respuesta de slhck , pero confiando en operaciones de archivo en lugar de invocaciones de comando:
[Ubuntu 14.04.4 LTS] cat /proc/1/comm=> init, no / sbin / init. Su respuesta tiene la versión más larga incluida. Pero +1 de todos modos.
OmarOthman
2
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.
No funciona en BSD (¿quizás incluye MacOSX? No estoy seguro). Incluso donde -e -festán disponibles, greppuede producir muchas coincidencias falsas, por ejemplo, grep 33incluye 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 greppropio. Todos (AFAIK) pstienen -p, así que solo ps -fp 33.
dave_thompson_085
0
Encuentro el método más fácil para estar con el siguiente comando:
ps
ols -l /proc/$PID/exe
ps -fp PID
mostrará el comando completoRespuestas:
En todos los sistemas compatibles con POSIX, y con Linux, puede usar
ps
:Aquí, el proceso se selecciona por su PID con
-p
. La-o
opción especifica el formato de salida, escomm
decir , el nombre del comando.Consulte también:
ps
- Open Group Base Especificaciones, número 6fuente
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 ycommand
devuelve el argumento 0Puede encontrar el nombre del proceso o el comando utilizado por el id de proceso o pid de
haciendo
Aquí pid es el pid para el que desea encontrar el nombre
Por ejemplo:
Para encontrar el nombre de proceso utilizado por pid 2480, puede usar
fuente
Para obtener la ruta del programa usando un determinado pid puede usar:
alternativamente puedes usar:
fuente
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.Ejemplo:
fuente
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.
fuente
ps
comando todo lo que verá es justojava
, pero el resto de los parámetros pasados se mostrarán completamente conpmap
.También puedes usar awk en combinación con ps
ejemplo:
para imprimir HEAD LINE puede usar
fuente
ps ax | grep 1
y vea si realmente devuelve elinit
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:
fuente
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.
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.
fuente
-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 elgrep
propio. Todos (AFAIK)ps
tienen-p
, así que solops -fp 33
.Encuentro el método más fácil para estar con el siguiente comando:
fuente
ps -p${pid}
, esto detectará muchos falsos positivos, incluido elgrep
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é
fuente