Информация о процессе jps недоступна - jconsole и jvisualvm не работают - PullRequest
17 голосов
/ 11 марта 2011

После обновления Windows мои jps, jconsole et jvisualvm больше не работают.

JPS дает мне идентификаторы процесса, но он говорит мне process information unavailable

И я не могу подключиться к этим процессам с помощью jvisualvm, как раньше.

Я использую 1.6.0_22 jre.

У меня уже была проблема в прошлом, пробовал этот трюк , и это сработало. Но на этот раз невезение не поможет.

Редактировать: Я нашел решение : в моей временной папке я уничтожил папку hsperfdata_<username>. Видимо была проблема с делом моего имени пользователя. Папка называлась hsperfdata_myname. После уничтожения и повторного создания при вызове jps он назывался hasperfdata_MYNAME.

Очень странно.

Ответы [ 4 ]

25 голосов
/ 18 апреля 2011

В моей временной папке я уничтожил папку hsperfdata_.Видимо была проблема с делом моего имени пользователя.Папка называлась hsperfdata_myname.После уничтожения и повторного создания при вызове jps он назывался hasperfdata_MYNAME.

Очень странно.

10 голосов
/ 30 июля 2015

В Unix убедитесь, что вы работаете от имени пользователя, запустившего его.

0 голосов
/ 18 сентября 2015

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

#!/bin/bash
# Name: fix_jps.bash
# Author: Cameron Pierce
#
# Purpose: create /tmp/hsperfdata directories that jps and jstat can work with

## VARIABLES
RETVAL=""
fileHSP=""
filePID=""
fileLOG=/tmp/fix_jps.log

# for every /tmp/hsperfdata_[name] directory that exists
for fileHSP in `ls -d /tmp/hsperfdata_*`; do
        #echo "entry ${fileHSP}" # DEBUG
        # if our search returns entries that are not directories, skip them
        if [ ! -d ${fileHSP} ]; then
                continue
        fi
        #ls ${fileHSP} # DEBUG

        # alternative to ls below
        #FINDFILES=(${fileHSP}/*)
        #if [ ${#FINDFILES[@]} -gt 0 ]; then
        #       echo "files in $fileHSP: ${#FINDFILES[@]} "
        #fi
    for filePID in `ls ${fileHSP}/ 2>> ${fileLOG} | grep "[[:digit:]]\{1,\}"`; do
            #echo "pid name: ${filePID}" # DEBUG
            # if the directory was empty, move on to the next fileENTRY
            if [ "${filePID}" == "" ]; then
                    #echo "the contents of the variable filePID appear to be empty \"${filePID}\"" # DEBUG
                    # remove the fileHSP if empty; this will clean up user hsperfdata dirs
                    rmdir ${fileHSP} 2>> ${fileLOG}
                    continue
            # if a symlink already exists, move on to the next fileENTRY
            elif [ -h /tmp/hsperfdata_${filePID} ]; then
                    #echo "symlink already exists for /tmp/hsperfdata_${filePID}" # DEBUG
                    continue
            fi
            #echo "name: ${filePID}"
            # if a process exists for filePID, create a symlink to the source file
            ps -eo pid | awk '{print $1}' | grep -q "^${filePID}$"
            RETVAL=$?
            # if a process exists with pid of filePID and a symlink doesn't exists, create symlink
            if [ $RETVAL -eq 0 -a ! -e /tmp/hsperfdata_${filePID} ]; then
                    ln -s ${fileHSP}/${filePID} /tmp/hsperfdata_$filePID
                    #echo ls -l /tmp/hs perfdata_${filePID} # DEBUG
            fi
    done
done

# remove broken symlinks
#find -L /tmp/hsperfdata_* -type l # DEBUG
find -L /tmp/hsperfdata_* -type l -delete
0 голосов
/ 29 марта 2011

у нас здесь такая же проблема.

Трюк с папкой tmp у нас тоже не сработал.

Пока что мы нашли несколько способов заставить вещи работать снова:

  • восстановление системы
  • переименуйте временную папку в «C: \ Documents and Settings \ myusername \ Local Settings» и создайте новую временную папку (я не уверен, что это безопасно, что касается окон ...)
  • начать удаление материала из временной папки вручную
  • вероятно, самый безопасный: запустите ccleaner, это очистит временную папку
...