Listen Sie Linux-Prozesse mit Fenstern auf

1170
dronus

Wie kann ich Linux-Prozesse (wie ps aux) auflisten, aber nur solche mit X11-Fenstern?

Ich denke, es muss eine einfache Verbindung (wie immer in Linux) zwischen den Prozessen und dem X-Server bestehen. Ist es ausgesetzt lsof?

4

2 Antworten auf die Frage

4
TOOGAM

xwininfo -stammwurzel | grep -v "hat keinen Namen" | grep -v Kind
Dies ist ein anderer Ansatz als der von Ihnen geforderte: Statt Prozesse aufzulisten, werden Fenster aufgelistet. Wenn Sie nach einer Liste von Prozess-ID-Nummern suchen, wird diese Aufgabe nicht ausgeführt. Wenn Sie nach einer Liste suchen, die ausgeführt wird, ist dies der Fall.

Offensichtlich zeigt Ihnen dieser Ansatz nicht den Namen eines Programms, dessen Name "child" enthält. Wenn Sie jedoch nach einer schnellen und einfachen Option suchen, die den meisten Zwecken dient, kann dies eine sein.

Übrigens, es gibt eine Reihe weiterer Optionen für "xwininfo", z. B. den Namen nur eines Fensters angeben zu können (anstatt das "Root" -Fenster anzugeben).

Außerdem können Sie den Befehl "xlsclients" verwenden, der eine ähnliche Funktionalität aufweist. Wenn Sie X11-Fenster-IDs benötigen, die in PIDs umgewandelt wurden, werfen Sie einen Blick auf die NetWM-Spezifikation (auch als EWMH-Spezifikation bezeichnet). Konforme Clients können `_NET_WM_PID` Atom festlegen, das mit dem Dienstprogramm 'xprop' gelesen werden kann, sofern Sie die Fenster-ID kennen. Bass vor 8 Jahren 0
1
MariusMatutiae

Ich bin nicht sicher, was du meinst. Am wahrscheinlichsten ist der Befehl, den Sie verwenden möchten

 ps alx | grep pts 

Sie benötigen das longFlag, psum die elfte Spalte anzuzeigen, in der ein Prozess-Terminal angezeigt wird.

Sie können jedoch die gleichen Informationen auch in einem anderen Format anzeigen, mit pstreedem ...

pstree zeigt laufende Prozesse als Baum. Der Baum wurzelt entweder bei pid oder bei init, wenn pid weggelassen wird.

Hiermit können Sie nach dem Desktop Manager (in meinem Fall kdm) suchen und dann alle Prozesse sehen, die davon abstammen, einschließlich der Prozesse, die Sie wie eine SSH-Verbindung beginnen. Wenn Sie das -pFlag verwenden, erhalten Sie die Prozessnummern.

 ├─konsole(2716)─┬─bash(2739)───ssh(8328) │ └─(2738) 

So können Sie überprüfen, ob die Prozessnummer für den sshProzess dieselbe ist wie in der Ausgabe von ps alx. AFAIK zeigt jedoch nicht an, in welchem ​​Format der Befehl ausgegeben wurde.