So erkennen Sie, welches WINEPREFIX verwendet wird

So erkennen Sie, welches WINEPREFIX verwendet wird

Gibt es einen Befehl, um anzuzeigen, welches Wineprefix derzeit aktiv ist, wenn ich es ausführe wine?

Antwort1

Von „innerhalb“ der Windows-Umgebung aus können Sie die Umgebungsvariable lesen WINEPREFIX. So können Sie das tun cmd:

$ WINEPREFIX=/home/lesmana/tmp/somewineprefix wine cmd
(bunch of wine output)
Z:\home\lesmana> echo %WINEPREFIX%
/home/lesmana/tmp/somewineprefix

Sie können andere Umgebungsvariablen mit dem cmdBefehl überprüfen set.

Wenn Sie Wine ohne gestartet haben WINEPREFIX, ist keine WINEPREFIXVariable festgelegt. In diesem Fall sollte Wineprefix der Standardwert ( $HOME/.wine) sein.

Ich habe keine einfache oder offizielle Möglichkeit gefunden, das Wineprefix von „außerhalb“ der Wine-Umgebung zu erhalten. Hier ist ein Hack:

Zuerst benötigen Sie die PID des Wineserver-Prozesses:

$ pgrep -fl wineserver
5197 wineserver

Dann können Sie einen Blick auf die Umgebungsvariablen des Prozesses werfen:

$ cat /proc/5197/environ | tr '\0' '\n' | grep -i wine
WINEDLLOVERRIDES=winemenubuilder.exe=d;
WINEPREFIX=/home/lesmana/tmp/somewineprefix
_=/usr/bin/wine
WINELOADERNOEXEC=1

Wenn Sie Wine ohne gestartet haben, WINEPREFIXist wiederum keine WINEPREFIXVariable vorhanden.

Alternativ können Sie die Dateideskriptoren des Prozesses überprüfen:

$ ls -l /proc/5197/fd | grep wine
lr-x------ 1 lesmana users 64 25. Sep 15:27 114 -> /home/lesmana/tmp/somewineprefix/drive_c/windows
lr-x------ 1 lesmana users 64 25. Sep 15:27 32 -> /home/lesmana/tmp/somewineprefix/drive_c/windows
lr-x------ 1 lesmana users 64 25. Sep 15:27 4 -> /home/lesmana/tmp/somewineprefix
lr-x------ 1 lesmana users 64 25. Sep 15:27 48 -> /home/lesmana/tmp/somewineprefix/drive_c/windows/system32
lr-x------ 1 lesmana users 64 25. Sep 15:27 5 -> /tmp/.wine-1000/server-802-2e0ac4 (deleted)
l-wx------ 1 lesmana users 64 25. Sep 15:27 6 -> /tmp/.wine-1000/server-802-2e0ac4/lock (deleted)

Es gibt ein Problem: Wenn es mehrere Wineserver-Prozesse gibt, müssen Sie herausfinden, welcher Wineserver zu welchem ​​Wine-Prozess gehört. Auch hier habe ich keine einfache Möglichkeit gefunden, diese Korrelation herzustellen. Die einzige Möglichkeit, die ich gefunden habe, besteht darin, die Zeitstempel der Prozesse zu überprüfen.

$ ps -ef
...
lesmana   5096  5085  0 22:33 pts/2    00:00:00 /bin/sh /home/lesmana/bin/wine cmd
lesmana   5097  5096  0 22:33 pts/2    00:00:00 cmd
lesmana   5100   614  0 22:33 ?        00:00:02 /usr/bin/wineserver
lesmana   5104   614  0 22:33 ?        00:00:00 C:\windows\system32\services.exe
lesmana   5110   614  0 22:33 ?        00:00:00 C:\windows\system32\explorer.exe /desktop
lesmana   5144   614  0 22:33 ?        00:00:03 C:\windows\system32\winedevice.exe
lesmana   5193  5093  0 22:34 pts/3    00:00:00 /bin/sh /home/lesmana/bin/wine cmd
lesmana   5194  5193  0 22:34 pts/3    00:00:00 cmd
lesmana   5197   614  0 22:34 ?        00:00:06 /usr/bin/wineserver
lesmana   5201   614  0 22:34 ?        00:00:00 C:\windows\system32\services.exe
lesmana   5207   614  0 22:34 ?        00:00:00 C:\windows\system32\explorer.exe /desktop
lesmana   5345   614  0 22:34 ?        00:00:03 C:\windows\system32\winedevice.exe
...

psHier werden zwei Wine-Prozesse und zwei Wineserver-Prozesse gestartet, die im Abstand von einer Minute beginnen. Bei Bedarf kann die Zeit in Sekunden angegeben werden .

Leider wird der Wineserver-Prozess als eine Art Daemon gestartet und ist kein Kind des Wine-Prozesses. Also kein Glück mit PPID.

verwandte Informationen