
我有一個關於如何在 Windows 上的 Cygwin 中終止進程的問題。我對 Cygwin 完全陌生。但我有一個任務,我根本無法終止。我嘗試發出以下命令:
kill 4568
kill -9 4568
/bin/kill -f 4568
我已在單獨的 Cygwin 終端機中發出命令,因為我無法在進程運行的 Cygwin 終端機中按 Ctrl+C 組合鍵。我在互聯網上進行了各種搜索,但沒有成功。
答案1
ps -W | awk '/calc.exe/,NF=1' | xargs kill -f
或者
ps -W | awk '$0~v,NF=1' v=calc.exe | xargs kill -f
或者
powershell kill -n calc
答案2
您可以嘗試:
taskkill /pid 4568
答案3
如果您想要僅 BASH 的解決方案,請嘗試以下操作:(它對我有用)
KILLPS="<My Process Name>"
WINPS=`ps -W | grep -i $KILLPS` # Make case-insensitive.
PID=`echo $WINPS | cut -d' ' -f1`
/bin/kill -f "$PID"
注意:使用 /bin/kill 時,嵌入式 shell Kill 不會殺死一般 Windows 程序的 PID。
答案4
這裡需要考慮兩件事:
- 取得正確的PID,即WINPID。
- 使用正確的工具。
要取得要殺死的正確 WINPID,請使用cat /proc/<PID>/winpid
.即運行這個:
ZID=$$; WINPID=$(cat /proc/${ZID}/winpid); echo "Kill WINPID: ${WINPID}"; ps; sleep 10 &
並立即做另一個ps
。
正確使用的工具是系統內部'PsKill64.exe -t <winpid>
這也會殺死腳本進程的所有後代,但事實kill
並非如此。