Как получить полную командную строку, используемую для запуска процесса

15

Eclipsed запустил процесс для меня, и я хотел бы увидеть полную командную строку.

Я пробовал "ps auxwww", но, похоже, он усекает путь до 4096 символов, есть ли способ заставить PS прекратить урезать путь или использовать другой инструмент для поиска полного пути?

Алекс Блэк
источник
Хм, может быть, ответ - перекомпилировать ядро? WTF. stackoverflow.com/questions/199130/…
Алекс Блэк
В моем случае, являющемся приложением java, вы можете использовать jconsole, чтобы получить полный путь к классам, на который он похож
Alex Black
Можно ли перенаправить его в файл и получить всю командную строку?
Джеймс
1
Я так не думаю, похоже, что / proc / {PID} / cmdline урезан до 4096 символов, жесткий предел установлен в ядре
Alex Black

Ответы:

24
cat /proc/{PID}/cmdline

Где {PID} - идентификатор процесса рассматриваемого процесса.

Бартон Читтенден
источник
1
/ proc / * / cmdline не содержит завершающего символа новой строки, поэтому echo $ (</ proc / 7851 / cmdline) дает более разборчивый вывод.
Бартон Читтенден
4
Arg. просто прочитайте ссылку переполнения стека, которую разместил Алекс Блэк ... похоже, что proc /.../ cmdline имеет то же ограничение в 4096 символов.
Бартон Читтенден
4

Пример о javaпроцессе, вот инструмент , который может показать некоторые дополнительные детали процесса: jps. Просто попробуйте, у вас, вероятно, есть - это частьJDK

Это похоже на базовую psкоманду - но не понимает некоторые особенности java. Основное использование - это идентификация запущенных процессов Java, которые затем проверяются другими инструментами анализа Java, например 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

Выдержка из справочной страницы о возможностях:

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
источник
2

Направьте его на «меньше», у вас не должно возникнуть проблем с прокруткой влево и вправо

ejes
источник
2
вложение его в меньшее не решает проблему усечения.
Алекс Блэк
да, это сработало для меня. в любом случае, похоже, что использование proc (предложенное выше) выглядит как отличное решение :)
ejes
Проблема, с которой я столкнулся, заключалась в том, что proc усекается до 4096 символов. Вы нашли способ преодолеть это ограничение?
Алекс Блэк