Ein user hat sich mehrfach am Server eingeloggt und in jeder Session das gleiche Programm gestartet, sagen wir mal mozilla. Wie kann ich jetzt in Python herausbekommen, welcher Prozess am aktuellen Terminal aktiv ist?
Hab schon mal in ps nachgesehen, bin aber nicht so richtig fündig geworden.
Hans
wie bekomme erkenne ich "meinen" Prozess?
-
- User
- Beiträge: 728
- Registriert: Sonntag 22. September 2002, 08:32
- Wohnort: Sauerland
- Kontaktdaten:
ähhhh, ich glaube nicht. Das ist doch das $$ unter den UNIXEN?
Vielleicht habe ich mit etwas umständlich ausgedrückt. Mir geht es darum, dass mein Pythonprogramm dem Mozilla einige Seiten "unterschieben" soll. Dafür muß ich aber erkennen, ob ein Mozilla in meiner "unmittelbaren Umgebung" bereits aktiv ist, könnte sein gleicher XServer, gleiches Terminal, ....? Es macht ja keinen Sinn,
einem Mozilla auf einer entfernten Station die Hilfedatei unterzuschieben.
Das was ich vor habe, klappt wunderbar. Nur dieses kleine Prob bleibt.
Hans
Vielleicht habe ich mit etwas umständlich ausgedrückt. Mir geht es darum, dass mein Pythonprogramm dem Mozilla einige Seiten "unterschieben" soll. Dafür muß ich aber erkennen, ob ein Mozilla in meiner "unmittelbaren Umgebung" bereits aktiv ist, könnte sein gleicher XServer, gleiches Terminal, ....? Es macht ja keinen Sinn,
einem Mozilla auf einer entfernten Station die Hilfedatei unterzuschieben.
Das was ich vor habe, klappt wunderbar. Nur dieses kleine Prob bleibt.
Hans
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
aha!
Unter /proc/0815/environ steht für den Prozess die "Umgebung", und auch das Display. Statt 0815 natürlich die ProzessID vom Mozilla. Vielleicht kannste damit was zaubern?
Gruß
Dookie
Unter /proc/0815/environ steht für den Prozess die "Umgebung", und auch das Display. Statt 0815 natürlich die ProzessID vom Mozilla. Vielleicht kannste damit was zaubern?
Gruß
Dookie
-
- User
- Beiträge: 728
- Registriert: Sonntag 22. September 2002, 08:32
- Wohnort: Sauerland
- Kontaktdaten:
Das geht ja ganz schön tief ins System. Dürfte extrem aufwändig werden weil jedesmal Leserechte geprüft werden müssen. Ich finde, das muß auch einfacher gehen. Das ps Kommando liefert ja fast alles.
Gibt's da nicht ein paar Systembefehle im XServer. Ein XServer ist doch an einen Arbeitsplatz gebunden, also müssten doch alle Prozesse, welche vom XServer aus gestartet werden, als Kindprozess vom XServer erkennbar sein, oder ist diese Annahme falsch?
Hans
Gibt's da nicht ein paar Systembefehle im XServer. Ein XServer ist doch an einen Arbeitsplatz gebunden, also müssten doch alle Prozesse, welche vom XServer aus gestartet werden, als Kindprozess vom XServer erkennbar sein, oder ist diese Annahme falsch?
Hans
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
Hi hans,
wieso extrem aufwändig?
Zuerst mit ps alle Mozilla-Prozesse die gerade laufen holen, die ProzessIDs extrahieren und der reihe nach
/proc/ProzessID[x]/environ auslesen und Display=x suchen und prüfen.
Wenn passender Mozilla gefunden, diesen die Seite anzeigen lassen, sonst neuen Mozilla starten.
Gruß
Dookie
wieso extrem aufwändig?
Zuerst mit ps alle Mozilla-Prozesse die gerade laufen holen, die ProzessIDs extrahieren und der reihe nach
/proc/ProzessID[x]/environ auslesen und Display=x suchen und prüfen.
Wenn passender Mozilla gefunden, diesen die Seite anzeigen lassen, sonst neuen Mozilla starten.
Gruß
Dookie
-
- User
- Beiträge: 728
- Registriert: Sonntag 22. September 2002, 08:32
- Wohnort: Sauerland
- Kontaktdaten:
Uff, das hätte ich mir mal besser vorher mit gvim angesehen. Geht doch. Etwas komischet Trennzeichen zwischen den Feldern. Wird in gvim als ^@ (ein Zeichen!) dargestellt.
Dann sähe das so aus:
Wenn ein User den Browser mehrfach an dem einen Arbeitsplatz gestartet hat, dann ist das nicht mein Problem. Das geht dann wirklich zu weit.
Ich verstehe das so wie so nicht: Früher benötigte man die Power von zwei C64 mit je 64 KB RAM, Floppydisk und Datasette um zum Mond und wieder zurück zu fliegen.
Heute benötigt man Minimum eine 1 Mhz CPU, 256 MB RAM, 2 GB Harddisk um Windows halbwegs vernünftig zum laufen zu bringen. Bei 2GB HD ist dann natürlich kein Platz mehr für sinnvolle Programme.
Irgendetwas stimmt da nicht! :D
Hnas
[/code]
Dann sähe das so aus:
Code: Alles auswählen
aktuelles DISPLAY ermitteln (von $$)
alle Instanzen des gewünschten Programmes suchen
wenn DISPLAY dem aktuellem Display enspricht, Programm an diesem Bildschirm aktiv!
Ich verstehe das so wie so nicht: Früher benötigte man die Power von zwei C64 mit je 64 KB RAM, Floppydisk und Datasette um zum Mond und wieder zurück zu fliegen.
Heute benötigt man Minimum eine 1 Mhz CPU, 256 MB RAM, 2 GB Harddisk um Windows halbwegs vernünftig zum laufen zu bringen. Bei 2GB HD ist dann natürlich kein Platz mehr für sinnvolle Programme.
Irgendetwas stimmt da nicht! :D
Hnas
[/code]
Ja: Windoof läut nicht mit 1MHz!! Oder bin ich da falsch informiert?hans hat geschrieben: Heute benötigt man Minimum eine 1 Mhz CPU, 256 MB RAM, 2 GB Harddisk um Windows halbwegs vernünftig zum laufen zu bringen. Bei 2GB HD ist dann natürlich kein Platz mehr für sinnvolle Programme.
Irgendetwas stimmt da nicht! :D
[/code]
mfg,
10011110
10011110