วิธีการฆ่ากระบวนการไวน์เมื่อพวกเขาผิดพลาดหรือจะผิดพลาด?


15

บางครั้งมันเกิดขึ้นที่แอปพลิเคชั่นไวน์ขัดข้อง (ทำให้ระบบช้าลงและทำให้ใช้งานไม่ได้) ในกรณีส่วนใหญ่ฉันสามารถฆ่าโปรแกรมด้วยxkillแต่บางครั้งฉันต้องรีสตาร์ทเนื่องจาก Ubuntu ดูเหมือนจะไม่ตอบสนองได้ดีมาก (สิ่งเดียวที่ใช้ได้คือALT+ F2ตัวเรียกใช้งานxkillไม่ได้) ฉันพยายามใช้wineboot -rหรือ-fแต่พวกเขาดูเหมือนจะไม่ทำงานได้ดีมาก .. หากมีสิ่งไม่ชัดเจนแจ้งให้เราทราบฉันจะพยายามอธิบายให้ดีขึ้น :)

คำตอบ:


13
killall nameofexefile.exe

เช่นเดียวกับกระบวนการลินุกซ์


นี่เป็นเพียงไวน์หรือสำหรับกระบวนการทำงานทั้งหมดใน linux
13east

สิ่งนี้จะฆ่ากระบวนการใด ๆ หน้าต่างผ่านไวน์หรือลินุกซ์
Conor Rynne

1
ดังนั้น wineerver -k จะฆ่ากระบวนการผลิตไวน์ทั้งหมด ... มันเป็นสิ่งที่ฉันหมายถึง ... ฉันไม่ได้ใช้ killall <file> .exe บ่อยครั้งที่ฉันไม่รู้ชื่อที่แน่นอนของไฟล์ (และเมื่อระบบบ้า ฉันจะไม่ทราบว่าในกรณีใด ๆ )
ฮาร์ดเดน

อ่าาาใช่แล้วในกรณีนั้นเซิร์ฟเวอร์เซิร์ฟเวอร์ -k อาจจะทำงานได้ เพียงระวังว่าคุณไม่มีกระบวนการผลิตไวน์อื่น ๆ ที่เปิดอยู่ซึ่งรวมถึงโปรแกรมใน PlayOnLinux และ Crossover ด้วย
Conor Rynne

34

คุณสามารถฆ่าเซสชันไวน์อย่างปลอดภัยผ่าน ALT + F2 หรือผ่านเทอร์มินัลโดยพิมพ์

wineserver -k

หากไม่ต้องการปิดระบบจริงๆคุณสามารถบังคับผ่านได้

wineserver -k9

4

ในฐานะโปรแกรมเมอร์ไวน์ฉันมักจะกำจัดสิ่งที่สาปแช่งทั้งหมดดังนั้นฉันจึงใช้สคริปต์ 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

~/.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 ฯลฯ


ใช้งานได้อย่างมีเสน่ห์ในขณะที่ wineerver -k หรือ -k9 ไม่ประสบความสำเร็จ
Michael-AD

อ่าขอบคุณ! ดูเหมือนว่าฉันจะทำสำเนาสคริปต์นี้หายไป แต่ตอนนี้ฉันกลับมาแล้ว! ฉันควรพูดถึงว่านี่จะทำงานบนระบบปฏิบัติการบน Linux ได้เท่านั้นเนื่องจากมันขุดผ่าน / proc
Daniel Santos

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


ฮ่า ๆ นั่นเป็นตัวอย่างจากสคริปต์ของฉัน! :) พวกเขาเปลี่ยนเป็น pip เป็น xargs แทนที่จะเป็น bash sub-shell ซึ่งก็ดีเพราะมันจะทำงานกับ / 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.