Chà, là một lập trình viên rượu vang, tôi thường sẽ nghiền ngẫm toàn bộ thứ chết tiệt đó, vì vậy tôi sử dụng kịch bản killwine siêu đặc biệt của mình. Đây là một cái chết khó khăn ( wineserver -k
là cách tốt đẹp để làm điều đó và luôn luôn được ưa thích).
#!/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
Điều này giả định rằng bạn đang có tiền tố rượu ~/.local/share/wine
. Ví dụ sử dụng là:
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.
Tôi không biết, nhưng tôi không nghĩ rằng bạn sẽ thường kết thúc với nhiều quá trình khác nhau trong bộ nhớ (kịch bản này xử lý) trên một bản phát hành dàn dựng bình thường hoặc thậm chí bình thường, nhưng tôi làm khá nhiều vì hack máy chủ và ntdll.
EDIT: Tập lệnh này sẽ chỉ hoạt động trên HĐH dựa trên Linux và giả định rằng hệ thống tệp Proc được gắn trên / Proc, v.v.