jps nicht angezeigt Tomcat-Prozess
Ich arbeite mit Tomcat 6.0.31 auf Ubuntu 10.10 und mit tge Sun JDK (java-6-sun). Obwohl tomcat ausgeführt wird seinen Prozess nicht zeigen, wenn ich laufen jps
(Java Virtual Machine Process Status Tool). Die einzige Ausgabe, die ich sehe, ist die pid für die jps-Prozess selbst. Warum sollte der Tomcat-Prozess nicht zeigen, bis?
- Haben Sie versucht mit jps als root? Vielleicht ist es ein Berechtigungsproblem?
- Für neuere JVMs, @Tempo Kommentar, Punkte auf die richtige Antwort:
jps -l
zeigt einen anderen Prozess-Liste alssudo jps -l
tut. Ichsudo
zu sehen, Tomcat, wenn es als root ausgeführt werden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie wahrscheinlich laufen in Bug 7009828:
Java 6 Update 23 und Java 6 Update 24 Java betrachten Sie die
java.io.tmpdir
Eigenschaft bei der Entscheidung, wo Sie einige Dateien, die benötigt wurden fürjps
,jconsole
undjvisulavm
zu erkennen, die lokal Laufenden JVMs. Dies bedeutet, dass jede JVM-Instanz, hatte dieses system definierte Eigenschaft, die auf etwas anderes als die Standardeinstellung (/tmp
) wäre unsichtbar zu diesen tools.Tomcat-Installationen, insbesondere die Standard-Einstellung dieser Eigenschaft auf Ihre Anlagen
temp
Ordner.Also: entweder upgrade auf Java 6 Update 25 oder später (wo ist der bug behoben) oder start
jps
mit-J-Djava.io.tmpdir=/path-to-tomcat-installation/temp
.Könnte es sein, aufgrund der
/tmp/hsperfdata_$USER
Verzeichnisse, die entfernt wird, indem ein cron-job läuft auf deinem system? Sehen http://www.semicomplete.com/blog/geekery/jps-shows-nothing-useful.html für weitere Informationen.jps
Ausgabe und cron-job zu sein scheint, der Schuldige ist. Warum nicht Java-Designer denken über dieses, wenn Sie entscheiden, um diese Dateien Bearbeiten, die in der/tmp
- Verzeichnis?Überprüfen Sie Ihre vm-args ob
-XX:-UsePerfData
vorhanden.Wenn ja, entfernen Sie es, und starten Sie die jvm -
Überprüfen Sie die Eigenverantwortung des /tmp/hsperfdata_* Verzeichnisse wie so:
Jedes Verzeichnis im Besitz des Benutzers, in dessen Besitz sich das java-Prozess. Wenn der Prozess, der Sie interessiert, ist nicht im Besitz von Ihnen, dann werden die Daten nicht zugänglich sein. Allerdings, wenn Sie laufen jstatd als root, dann wird es in der Lage sein, um Zugriff auf alle Daten.