実行時に現在アクティブな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
。
ワインを開始しないと、変数セットWINEPREFIX
はありません。WINEPREFIX
この場合、wineprefixはデフォルト値($HOME/.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)
問題があります。複数の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
...
2つのワインプロセスと2つのワインサーバープロセスがあり、開始間隔は1分です。必要に応じてps
時間を秒単位で報告できます。
残念ながら、wineserverプロセスは、wineプロセスの子プロセスではなく、ある種のデーモンから始まります。 PPIDには運がありません。