ワインのプロセスがクラッシュしたりクラッシュしたりするときに、ワインプロセスを強制終了する方法は?


15

Wineアプリケーションがクラッシュすることがあります(システムの速度が低下し、ほとんど使用できなくなります)。ほとんどの場合、私はを使用してプログラムを強制終了できxkillますが、Ubuntuがあまりよく応答しないように見えるため、いつか再起動する必要があります(動作するのはランチャーであるALT+ のみでF2xkillそうではありません)。私が使用しようとしたwineboot -r-fが、彼らは何かが不明である場合は、私が良く説明してみましょう知っている...非常にうまく動作するようには思えません:)

回答:


13
killall nameofexefile.exe

Linuxプロセスのように


これはワイン用ですか、Linuxで実行中のすべてのプロセス用ですか?
13東部

これにより、すべてのプロセス、ワイン経由のウィンドウ、またはLinuxが
強制終了されます

1
そのため、wineserver -kはすべてのワインプロセスを強制終了します...それは私が意図したことです... killall <file> .exeを頻繁に使用することはありません。私はいずれの場合でも知りません)
ハデン

ああ、その場合、wineserver -kがおそらく仕事をするでしょう。PlayOnLinuxとCrossoverのプログラムも含めて、他のワインプロセスを開かないように注意してください。
コナーリン

34

Altキーを押しながらF2キーを押すか、ターミナルを入力してワインセッションを安全に終了できます。

wineserver -k

本当にシャットダウンしたくない場合は、経由して強制的に実行できます

wineserver -k9

4

まあ、ワインプログラマーとして、私はしばしば気の毒なことを全部やりくりするので、超特別なキルワインスクリプトを使用します。これは大変な死です(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

これは、ワインのプレフィックスがの下にあることを前提としています~/.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ベースのOSでのみ動作し、procファイルシステムが/ procなどにマウントされていることを前提としています。


wineserver -kまたは-k9は成功しませんでしたが、魅力のように機能します。
Michael-AD

ああ、ありがとう!私はこのスクリプトのコピーを失ったようです、そして今、私は再びそれを持っています!これは、/ procを掘り下げるため、LinuxベースのOSでのみ機能することに注意してください。
ダニエルサントス

2

私のバージョン:

ls -l /proc/*/exe 2>/dev/null | grep -E 'wine(64)?-preloader|wineserver' | perl -pe 's;^.*/proc/(\d+)/exe.*$;$1;g;' | xargs -n 1 kill

それはすべてのワインプロセスを殺します。この投稿に感謝/ubuntu//a/732320/605355


笑、それは私のスクリプトのスニペットです!:)彼らはそれをbashサブシェルの代わりにxargsにパイプするように変更しました-それは/ bin / shでも動作するので良いです。ntdllのプロセスの初期化を完了する前にハングするプロセスもありますが、死ぬことはありません。たぶん、私は自分のスクリプト、またはそれのいくつかの化身をメインラインに提出しようとする必要があります。編集:ああ、なるほど、それはあなたの修正版です:)
ダニエル・サントス

1

私はちょうど同じ問題を抱えようとしていました。ターミナルのこのコマンドは私を助けてくれました。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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.