JINFO – информация о java-процессе
Бывает такое, что во время «боевой» эксплуатации java-приложения появляется потребность посмотреть параметры java-процесса. Порой надо узнать, с какими параметрами приложение было запущено, определить значения переменных окружения и другую подобную информацию. В Java-мире для решения задач мониторинга есть множество интересных инструментов. Сегодня мы рассмотрим один из них. Это jinfo.
Сегодня «подопытным кроликом» будет популярная утилита jconcole. Допустим, jconcole – это некий java-процесс, информацию о котором мы хотим получить.
Первое, что надо сделать – получить pid (т. е. идентификатор процесса jconcole). Делаем это так:
ps -ef | grep jconsole
В моем случае pid – 5653.
Зная pid, на jconcole можно «натравить» jinfo. Делается это так:
jinfo 5653
Тут всё просто, jinfo в качестве параметра надо передать pid процесса, о котором нам нужна информация.
Jinfo в консоль напечатает много интересной информации о процессе.
Например, это:
- «java.runtime.version» и «java.home» – jvm, которую использует процесс. Часто в старых системах на серверах зоопарк jvm, и не понятно, кто что использует;
- «java.io.tmpdir» и «user.dir» – показывают, куда наиболее вероятно процесс может сохранять какие-то файлы;
- «java.class.path» – показывает, откуда процесс загружает библиотеки;
- «Command line» – параметры командной стоки, с которыми стартовало приложение.
Отдельно хочется остановиться на system properties, ведь не всегда эти значения легко узнать.
В случае с jconsole при старте определяется system property «application.home». Jinfo выводит текущее значение system properties, т. е. если во время работы приложения system properties изменилось, jinfo выведет актуальное значение.
Jinfo – интересная и полезная утилита диагностики, однако надо знать, что сейчас статус этой утилиты – «экспериментальная». Т. е. она может работать, а может и с такой ошибкой падать: «can't determine target's VM version : field "_reserve_for_allocation_prefetch" not found in type Abstract_VM_Version».
Если у вас jinfo не заработает, не забывайте про «стабильную классику» – jconcole.