Cómo saber qué WINEPREFIX está en uso

Cómo saber qué WINEPREFIX está en uso

¿Existe algún comando para ver qué prefijo de vino está activo actualmente cuando ejecuto wine?

Respuesta1

Desde "dentro" del entorno de Windows puede leer la variable de entorno WINEPREFIX. Así es como puedes hacerlo desde cmd:

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

Puede inspeccionar otras variables de entorno utilizando el cmdcomando set.

Si comenzaste con Wine sin WINEPREFIXentonces no hay ningún WINEPREFIXconjunto de variables. En ese caso, el prefijo vino debería ser el predeterminado ( $HOME/.wine).

No encontré una manera fácil u oficial de obtener el prefijo del vino "fuera" del entorno del vino. Aquí hay un truco:

Primero necesitas el PID del proceso Wineserver:

$ pgrep -fl wineserver
5197 wineserver

Luego puedes echar un vistazo a las variables de entorno del proceso:

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

Nuevamente, si comenzó sin vino, WINEPREFIXno habrá ninguna WINEPREFIXvariable.

Alternativamente, puede consultar los descriptores de archivo del proceso:

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

Hay un problema: si hay varios procesos de Wineserver, entonces hay que encontrar qué Wineserver pertenece a qué proceso de vino. Nuevamente no encontré una manera fácil de hacer esta correlación. La única forma que encontré es inspeccionando las marcas de tiempo de los procesos.

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

Aquí hay dos procesos de vino y dos procesos de servidor de vino iniciados con un minuto de diferencia. Es posible llegar psa informar el tiempo en segundos si es necesario.

Desafortunadamente, el proceso del servidor de vino se inicia como una especie de demonio y no es hijo del proceso del vino. Entonces no hubo suerte con PPID.

información relacionada