当 Wine 进程崩溃或者即将崩溃时如何终止它?

当 Wine 进程崩溃或者即将崩溃时如何终止它?

有时 Wine 应用程序会崩溃(导致系统变慢,几乎无法使用)。在大多数情况下,我可以使用 终止程序xkill,但有时我必须重新启动,因为 Ubuntu 似乎响应不太好(唯一有效的是ALT+ F2,启动器;xkill不起作用)。我试过使用wineboot -r-f,但它们似乎效果不佳。如果有什么不清楚的地方,请告诉我,我会尽量解释得更好 :)

答案1

您可以通过 ALT+F2 或通过终端输入以下命令安全地终止 wine 会话

wineserver -k

如果确实不想关机,那么你可以通过以下方式强制关机

wineserver -k9

答案2

killall nameofexefile.exe

就像 Linux 进程一样

答案3

好吧,作为一名 Wine 程序员,我经常会把整个东西弄得一团糟,所以我使用我超级特殊的 killwine 脚本。这是一种艰难的死亡(这wineserver -k是一种很好的方法,总是首选)。

#!/bin/bash

wine_cellar="${HOME}/.local/share/wine"

if (($#)); then
    if [[ -e "${wine_cellar}/$1" ]]; then
        WINEPREFIX="${wine_cellar}/$1"
        shift
    elif [[ "${1:0:1}" != "-" ]]; then
        echo "ERROR: Didn't understand argument '$1'?" >&2;
        exit 1
    fi
fi

if ((${#WINEPREFIX})); then
    pids=$(
        grep -l "WINEPREFIX=${WINEPREFIX}$" $(
            ls -l /proc/*/exe 2>/dev/null |
            grep -E 'wine(64)?-preloader|wineserver' |
            perl -pe 's;^.*/proc/(\d+)/exe.*$;/proc/$1/environ;g;'
        ) 2> /dev/null |
        perl -pe 's;^/proc/(\d+)/environ.*$;$1;g;'
    )
else
    pids=$(
        ls -l /proc/*/exe 2>/dev/null |
        grep -E 'wine(64)?-preloader|wineserver' |
        perl -pe 's;^.*/proc/(\d+)/exe.*$;$1;g;'
    )
fi

if ((${#pids})); then
    set -x
    kill $* $pids
fi

假设您的 Wine 前缀位于 下~/.local/share/wine。用法示例如下:

killwine                       # Just kill all instances of wine
killwine -9                    # Hard kill them all
killwine lotro                 # Only kill wine under ${HOME}/.local/share/wine/lotro
killwine -INT lotro            # Same as above, but use SIGINT
WINEPREFIX=/tmp/crap killwine  # Kill only the instance under /tmp/crap
sudo reboot                    # Pretend you're running windows.

我不知道,但我不认为你会在正常甚至正常+暂存版本中经常遇到各种进程挂在内存中(此脚本会处理这些进程)的情况,但由于黑客入侵服务器和 ntdll,我做了很多这样的事情。

编辑:该脚本仅适用于基于 Linux 的操作系统,并假定 proc 文件系统安装在 /proc 等上。

答案4

我刚好也遇到了同样的问题。终端中的这个命令对我有帮助。按 Ctrl + Alt + t,然后输入以下内容:
ps -x | grep "Your program name" | awk '{print $1}' | xargs kill

你的程序名称应该写成不带引号,它帮助我解决了oblivion.exe:
ps -x | grep Oblivion | awk '{print $1}' | xargs kill

相关内容