Cómo obtener la línea de comando completa utilizada para iniciar un proceso

15

Eclipsed lanzó un proceso para mí, y me gustaría ver la línea de comando completa utilizada.

Intenté "ps auxwww", pero parece truncar la ruta a 4096 caracteres, ¿hay alguna forma de hacer que PS deje de truncar la ruta o usar otra herramienta para encontrar la ruta completa?

Alex Black
fuente
Hmm, ¿tal vez la respuesta es recompilar el núcleo? wtf. stackoverflow.com/questions/199130/…
Alex Black
Para mi caso, que es una aplicación de Java, puede usar jconsole para obtener el classpath completo que parece
Alex Black
¿Es posible redirigirlo a un archivo y obtener la línea de comando completa?
James
1
No lo creo, parece que / proc / {PID} / cmdline está truncado en 4096 caracteres, un límite estricto establecido en el núcleo
Alex Black

Respuestas:

24
cat /proc/{PID}/cmdline

Donde {PID} es el ID del proceso en cuestión.

Barton Chittenden
fuente
1
/ proc / * / cmdline no contiene una nueva línea final, por lo que echo $ (</ proc / 7851 / cmdline) proporciona una salida más legible.
Barton Chittenden
44
Arg. solo lea el enlace de desbordamiento de pila que Alex Black publicó ... parece que proc /.../ cmdline tiene el mismo límite de 4096 caracteres.
Barton Chittenden
4

El ejemplo se trata de un javaproceso, he aquí una herramienta que puede mostrar algunos detalles adicionales del proceso: jps. Solo inténtalo, probablemente lo tengas, es parte deJDK

Es similar a un pscomando básico , pero no comprende algunos java-speciffics. El uso principal es identificar los procesos en ejecución de Java, que luego se inspeccionan con otras herramientas de análisis de Java, como jstack.

$ jps -ml  
31302 com.intellij.rt.execution.application.AppMain com.example.Foo some.properties
26590 com.intellij.idea.Main nosplash
31597 sun.tools.jps.Jps -ml

Un extracto de la página del manual sobre las opciones:

jps - Java Virtual Machine Process Status Tool

jps [ options ] [ hostid ]

[...]

-q  Suppress  the  output of the class name, JAR file name, and argu‐
    ments passed to the main method, producing only a list  of  local
    VM identifiers.

-m  Output the arguments passed to the main method. The output may be
    null for embedded JVMs.

-l  Output the full package name for the application's main class  or
    the full path name to the application's JAR file.

-v  Output the arguments passed to the JVM.

-V  Output  the  arguments  passed  to the JVM through the flags file
    (the   .hotspotrc   file   or   the   file   specified   by   the
    -XX:Flags=<filename> argument).

-Joption
    Pass  option  to  the  java  launcher called by jps. For example,
    -J-Xms48m sets the startup memory to 48 megabytes. It is a common
    convention  for -J to pass options to the underlying VM executing
    applications written in Java.

[...]
Volker Siegel
fuente
2

póngalo en 'menos', no debería tener problemas para desplazarse a izquierda y derecha :)

ejes
fuente
2
ponerlo en menos no resuelve el problema del truncamiento.
Alex Black
eh, eso funcionó para mí. de todos modos, parece que usar proc (sugerido anteriormente) parece una gran solución :)
ejes
El problema que encontré fue que el proceso se trunca a 4096 caracteres, ¿encontraste una manera de superar ese límite?
Alex Black