どのWINEPREFIXが使用されているかを確認する方法

どのWINEPREFIXが使用されているかを確認する方法

実行時に現在どの wineprefix がアクティブであるかを確認するコマンドはありますかwine?

答え1

Windows 環境の「内部」から環境変数を読み取ることができますWINEPREFIX。これを行う方法は次のとおりですcmd

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

cmdコマンドを使用して他の環境変数を調べることができますset

なしで Wine を起動した場合、変数は設定WINEPREFIXされませんWINEPREFIX。その場合、wineprefix はデフォルト ( $HOME/.wine) になります。

wine 環境の「外部」から wineprefix を取得する簡単で公式な方法は見つかりませんでした。ここにハックがあります:

まず、wineserver プロセスの PID が必要です。

$ pgrep -fl wineserver
5197 wineserver

次に、プロセスの環境変数を覗いてみましょう。

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

繰り返しますが、ワインをそれなしで始めた場合、変数WINEPREFIXはありませんWINEPREFIX

あるいは、プロセスのファイル記述子を確認することもできます。

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

問題が 1 つあります。複数の wineserver プロセスがある場合、どの wineserver がどの wine プロセスに属しているかを見つける必要があります。この場合も、この相関関係を簡単に作成する方法は見つかりませんでした。私が見つけた唯一の方法は、プロセスのタイムスタンプを調べることです。

$ 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ここでは、1 分間隔で開始された 2 つの wine プロセスと 2 つの wineserver プロセスがあります。必要に応じて、時間を秒単位で報告することもできます。

残念ながら、wineserver プロセスは何らかのデーモンとして起動され、wine プロセスの子ではありません。そのため、PPID は機能しません。

関連情報