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 cmd
Befehl überprüfen set
.
Wenn Sie Wine ohne gestartet haben WINEPREFIX
, ist keine WINEPREFIX
Variable 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, WINEPREFIX
ist wiederum keine WINEPREFIX
Variable 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
...
ps
Hier 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.