Como saber qual WINEPREFIX está em uso

Como saber qual WINEPREFIX está em uso

Existe um comando para ver qual wineprefix está ativo no momento quando executo wine?

Responder1

De "dentro" do ambiente Windows você pode ler a variável de ambiente WINEPREFIX. Aqui está como você pode fazer isso cmd:

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

Você pode inspecionar outras variáveis ​​de ambiente usando o cmdcomando set.

Se você iniciou o wine sem WINEPREFIX, não haverá WINEPREFIXconjunto de variáveis. Nesse caso, o wineprefix deve ser o padrão ( $HOME/.wine).

Não encontrei nenhuma maneira fácil ou oficial de obter o wineprefix "de fora" do ambiente do vinho. Aqui está um truque:

Primeiro você precisa do PID do processo wineserver:

$ pgrep -fl wineserver
5197 wineserver

Então você pode dar uma olhada nas variáveis ​​de ambiente do processo:

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

Novamente, se você começou o wine sem WINEPREFIXentão não haverá WINEPREFIXvariável.

Alternativamente, você pode verificar os descritores de arquivo do processo:

$ 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)

Há um problema: se houver vários processos wineserver, você terá que descobrir qual wineserver pertence a qual processo wine. Novamente não encontrei uma maneira fácil de fazer essa correlação. A única maneira que encontrei foi inspecionando os carimbos de data/hora dos processos.

$ 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
...

Aqui estão dois processos wine e dois processos wineserver iniciados com um minuto de intervalo. É possível relatar pso tempo em segundos, se necessário.

Infelizmente, o processo wineserver é iniciado como uma espécie de daemon e não é filho do processo wine. Portanto, não tive sorte com o PPID.

informação relacionada