web-dev-qa-db-fra.com

Comment tuer les processus viticoles quand ils plantent ou vont tomber en panne?

Il arrive parfois qu'une application Wine se bloque (ce qui ralentit le système et le rend presque inutilisable). Dans la plupart des cas, je suis capable de tuer le programme avec xkillname__, mais parfois, je dois redémarrer car Ubuntu ne semble pas très bien répondre (la seule chose qui fonctionne est ALT+F2, le lanceur; xkillnon). J'ai essayé d'utiliser wineboot -r ou -f mais ils ne semblent pas très bien fonctionner .. Si quelque chose n'est pas clair, faites-moi savoir, je vais essayer de mieux l'expliquer :)

15
Hadden
killall nameofexefile.exe

tout comme les processus linux

13
Conor Rynne

Vous pouvez tuer des sessions Wine en toute sécurité, soit via ALT + F2, soit via un terminal en tapant

wineserver -k

Si c'est vraiment ne veut pas arrêter alors vous pouvez le forcer via

wineserver -k9
32
fossfreedom

Eh bien, en tant que programmeur viticole, je vais souvent m'occuper de tout, alors j'utilise mon script killwine super spécial. C'est une mort difficile (wineserver -k est le moyen le plus agréable de le faire et est toujours préféré).

#!/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

Cela suppose que vos préfixes de vin sont sous ~/.local/share/wine. Les exemples d'utilisation sont:

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.

Je ne sais pas, mais je ne pense pas que vous allez souvent vous retrouver avec divers processus bloqués en mémoire (ce dont traite ce script) dans une version normale ou même normale, mais je fais pas mal de choses à cause de piratage du serveur et ntdll.

EDIT: ce script ne fonctionnera que sur un système d'exploitation Linux et suppose que le système de fichiers proc est monté sur/proc, etc.

4
Daniel Santos

Ma version:

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

Il tue tous les processus de vin. Merci à cet article https://askubuntu.com/a/732320/605355

2
Andrey Dovbyshko

J'étais sur le point d'avoir le même problème. Cette commande en terminal m'a aidé. Appuyez sur Ctrl + Alt + t puis écrivez ce qui suit:
ps -x | grep "Your program name" | awk '{print $1}' | xargs kill

Votre nom de programme doit être écrit sans guillemets, Cela m'a aidé à résoudre oblivion.exe:
ps -x | grep Oblivion | awk '{print $1}' | xargs kill

1
Luke359