Как мне получить командную строку, которая запустила процесс - PullRequest
13 голосов
/ 30 марта 2010

Можно ли из Java получить полную командную строку со всеми аргументами, запустившими приложение?

System.getEnv() и System.getProperties() не содержат значений.

Ответы [ 8 ]

13 голосов
/ 30 марта 2010

Некоторые из них доступны из RuntimeMXBean, полученного путем вызова ManagementFactory.getRuntimeMXBean()

Вы можете, например, позвонить getInputArguments()

Javadocs для которых говорят:

Возвращает входные аргументы, передаваемые виртуальной машине Java, которая не включает аргументы в метод main. Этот метод возвращает пустой список, если для виртуальной машины Java нет входного аргумента.

Некоторые реализации виртуальных машин Java могут принимать входные аргументы из разных источников: например, аргументы, передаваемые из приложения, запускающего виртуальную машину Java, такие как команда java, переменные среды, файлы конфигурации и т. Д.

Как правило, не все параметры командной строки для команды 'java' передаются виртуальной машине Java. Таким образом, возвращаемые входные аргументы могут включать не все параметры командной строки.

2 голосов
/ 30 марта 2010

В Linux / UNIX это должно быть возможно, когда вы получаете вывод этой команды (запускается в оболочке)

cat /proc/$PPID/cmdline

Но это вообще не переносимо и поэтому не должно использоваться в Java ...

1 голос
/ 08 апреля 2010

Существует переменная окружения% ~ dp0, которая возвращает полный путь

1 голос
/ 30 марта 2010

Возможно, вы захотите посмотреть, как это делает jps. Это программа на Java, которая может получить полную командную строку для всех процессов Java, включая полное имя класса основного класса и параметры JVM.

1 голос
/ 30 марта 2010

Вам могут помочь следующие ссылки:

Как получить аргументы командной строки для запущенного процесса

получить командную строку запущенных процессов

Как получить список текущих открытых окон / процессов с Java?

Так же, как примечание:

В Windows у вас есть Process Explorer от Sysinternals , который показывает вам командную строку, используемую для открытия процесса. Щелкните правой кнопкой мыши по процессу и выберите Свойства ... В открывшемся окне вы увидите Командную строку.

0 голосов
/ 06 февраля 2012

Если вы используете Solaris в качестве ОС, взгляните на утилиту "pargs". Печатает всю необходимую информацию.

0 голосов
/ 17 декабря 2010

Посмотрите на YAJSW (еще один Java Service Wrapper) - он имеет реализации на основе JNA для различных ОС (включая win32 и linux), которые делают именно это, поэтому он может получить командную строку для запущенного процесса и создать конфигурацию, которая оборачивает это в сервис. Чуть больше информации здесь .

0 голосов
/ 30 марта 2010

Одна из опций, которую я использовал в прошлом для поддержания кроссплатформенного блеска, - задавать командную строку в качестве переменной среды перед выполнением команды.

...