當我運行時,是否有命令可以查看哪個 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)
有一個問題:如果有多個 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
...
這裡有兩個 wine 進程和兩個 wineserver 進程,啟動間隔一分鐘。如果需要,可以以ps
秒為單位報告時間。
不幸的是,wineserver 程序是作為某種守護程序啟動的,而不是 wine 程序的子程序。所以 PPID 沒有運氣。