Hi,
Hab eine Frage bezüglich Linux Prozessen.
Wenn ich auf einem System ein ps -ef oder ps -aux abschicke bekomme ich normalerweise folgende Ausgabe:
root 86 1 0 Nov04 ? 00:00:02 [kjournald]
root 598 1 0 Nov04 ? 00:00:00 /usr/sbin/cron
Meine Frage nun:
Warum wird bei einigen Prozessen nicht das File angezeigt, das ausgeführt wird. ( oberes Beispiel )
Ich hatte das Phänomen auch schon, als ich eine Java Applikation gestartet habe. Dort hat es mir ebenfals nur [Java] ausgegeben. Bei einer anderen jedoch gab es sowas: /usr/java/java -Dlog…
Wo liegt da der Unterschied bzw. warum wir das so gemacht?
Danke und Gruss
Simon
Hallo Simon!
Wenn ich auf einem System ein ps -ef oder ps -aux abschicke bekomme ich normalerweise folgende Ausgabe: root 86 1 0 Nov04 ? 00:00:02 [kjournald] root 598 1 0 Nov04 ? 00:00:00 /usr/sbin/cron
Meine Frage nun:
Warum wird bei einigen Prozessen nicht das File angezeigt, das ausgeführt wird? ( oberes Beispiel )
Normalerweise wird bei ps in der Spalte COMMAND das Kommando angegeben, mit dem der Prozess gestartet wurde. Das kannst Du leicht selbst ausprobieren: $ /bin/sleep 120 & $ sleep 60 & $ ps aux |grep [s]leep 3120 4171 0.0 0.4 5644 560 pts/0 S 10:58 0:00 /bin/sleep 120 3120 4202 0.0 0.4 4188 560 pts/0 S 10:58 0:00 sleep 60
Jetzt gibt es aber einige Fälle in denen das anders ist. Spontan fallen mir da drei Möglichkeiten ein: Es handelt sich um einen Kernelprozess, nicht um einen User Space Prozess, wie z.B. kjournald in Deinem Beispiel. Hier gibt es keinen Befehlsaufruf, der angezeigt werdeb könnte. Wurde ein Prozess ausgespwappt, ist u.U. auch die Information über den Aufruf des Prozessen nicht mehr im RAM vorhanden, sondern müsste von der Festplatte gelesen werden. Das ist evtl. bei der Java Applikation passiert. Der Prozess kann die angezeigte Information auch selbst ändern. Das machen z.B. sshd oder postgresql, wie im folgenden zu sehen ist: postgres 3075 0.0 4.7 21780 6028 ? S 08:45 0:01 postgres: aetutos root 3784 0.0 1.5 8212 1980 ? Ss 09:51 0:01 sshd: root@pts/0
Harald
Hi,
Danke für die fixe uns sehr kompetente Antwort.
Leider habe ich ein weiteres Problem mit einem Java Prozess.
Ich habe eine Jave Applikation unter /export/sw/Appl_Name14_Test
Wenn ich diese starte sehe ich mit ps -aux bzw- ps -ef folgendes:
user 598 1 0 Nov04 ? 00:00:00 /export/sw/Appl_Name14_Test -Dlog=/java/bla
Wenn ich jetzt produktiv gehen möchte damit benenne ich das ganze einfach in /export/sw/Appl_Name14 um.
Wenn ich aber den Prozess jetzt starte bekomme ich folgenden output von ps:
user 598 1 0 Nov04 ? 00:00:00 [java]
Warum ist das so? Die Applikation ist genau die selbe, nur der Pfdad hat etwas geändert. Die Permissions jeglicher Files sind gleich. Ich habe auch überpüft ober er den Prozess ins Swap verlagert, doch auch da, Fehlanzeige. Der Server hat 6GB Memory.
Weiss jemand Rat?
OS=Redhat
Danke und Gruss
Simon