Подтвердить что ты не робот

Jps информация о процессе недоступна - jconsole и jvisualvm не работают

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

Jps дает мне идентификаторы процесса, но он сообщает мне process information unavailable

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

Я запускаю 1.6.0_22 jre.

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

В unix убедитесь, что вы работаете как пользователь, который его запустил.

Ответ 3

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

Тэг папки tmp также не сработал для нас.

До сих пор мы нашли несколько способов заставить все работать снова:

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

Ответ 4

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

#!/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