Şarap süreçleri çöktüklerinde veya çökeceklerinde nasıl öldürülür?


15

Bazen bir Şarap uygulaması çöküyor (sistemi yavaşlatıyor ve neredeyse kullanılamaz hale getiriyor). Çoğu durumda programı ile öldürebilirim xkill, ancak Ubuntu çok iyi yanıt vermediği için yeniden başlatmam gerekiyor (işe yarayan tek şey ALT+ F2, başlatıcı; xkilldeğil). Kullanmaya çalıştım wineboot -rya da -fçok iyi çalışmıyor gibi görünüyorlar.

Yanıtlar:


13
killall nameofexefile.exe

linux süreçleri gibi


Bu sadece şarap için mi yoksa linux'taki tüm işlemler için mi?
13east

bu herhangi bir işlemi, şarap veya linux yoluyla pencereleri öldürecek
Conor Rynne

1
Bu yüzden wineserver -k tüm şarap süreçlerini öldürecek ... demek istediğim ... Killall <file> .exe kullanmıyorum, sık sık dosyanın tam adını bilmiyorum (ve sistem çıldırdığında) Hiçbir durumda bilmeyeceğim)
Hadden

ahhh o zaman bu durumda wineserver -k muhtemelen işi yapacak. PlayOnLinux ve Crossover'daki programları da içeren başka herhangi bir şarap işleminizin olmadığına dikkat edin.
Conor Rynne

34

Şarap oturumlarını ALT + F2 veya terminal aracılığıyla yazarak güvenle öldürebilirsiniz.

wineserver -k

Gerçekten kapatmak istemiyorsa, o zaman

wineserver -k9

4

Bir şarap programcısı olarak, lanet olası şeyi sık sık bulacağım, bu yüzden süper özel killwine senaryomu kullanıyorum. Bu zor bir ölümdür ( wineserver -kbunu yapmanın iyi bir yoludur ve her zaman tercih edilir).

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

Bu, şarap öneklerinin altında olduğunu varsayar ~/.local/share/wine. Kullanım örnekleri:

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.

Bilmiyorum, ama genellikle normal veya hatta normal + evreleme sürümünde bellekte asılı olan çeşitli işlemlerle (bu komut dosyasının ne ile ilgilendiğini) bitireceğinizi sanmıyorum, ancak çok fazla şey yapıyorum sunucu ve ntdll kesmek.

EDIT: Bu komut dosyası yalnızca Linux tabanlı bir işletim sisteminde çalışır ve proc dosya sisteminin / proc, vb. Üzerine monte edildiğini varsayar.


Bir cazibe gibi çalışır, wineserver -k veya -k9 başarılı olamadı.
Michael-AD

Ahh, teşekkürler! Bu komut dosyasının kopyasını kaybettim ve şimdi tekrar aldım! Bunun sadece Linux tabanlı bir işletim sisteminde çalışacağından bahsetmeliyim, çünkü / proc.
Daniel Santos

2

Benim versiyonum:

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

Tüm şarap işlemlerini öldürür. Bu gönderiye teşekkürler /ubuntu//a/732320/605355


lol, bu senaryomdan bir pasaj! :) Sadece bash alt kabuğu yerine xargs olarak değiştirdiler - bu iyi çünkü / bin / sh ile çalışacak. Hala süreç bitmeden önce asmak bazı süreçler olsa ölmüyordum ntdll şeyler init şeyler. Belki senaryomu veya bir miktar enkarnasyonunu ana hatta göndermeye çalışmalıyım. EDIT: Oh, anlıyorum, bu değiştirilmiş sürüm :)
Daniel Santos

1

Ben de aynı problemi yaşamak üzereydim. Terminaldeki bu komut bana yardımcı oldu. Ctrl + Alt + t tuşlarına basın ve aşağıdakileri yazın:
ps -x | grep "Your program name" | awk '{print $1}' | xargs kill

Program adınız tırnak işaretleri olmadan yazılmalıdır , oblivion.exe çözmemde bana yardımcı oldu:
ps -x | grep Oblivion | awk '{print $1}' | xargs kill

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.