如何在 cygwin 終端機終止 Windows 進程?

如何在 cygwin 終端機終止 Windows 進程?

我有一個關於如何在 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

這裡需要考慮兩件事:

  1. 取得正確的PID,即WINPID。
  2. 使用正確的工具。

要取得要殺死的正確 WINPID,請使用cat /proc/<PID>/winpid.即運行這個:

ZID=$$; WINPID=$(cat /proc/${ZID}/winpid); echo "Kill WINPID: ${WINPID}"; ps; sleep 10 &
 

並立即做另一個ps

正確使用的工具是系統內部'PsKill64.exe -t <winpid>這也會殺死腳本進程的所有後代,但事實kill並非如此。

相關內容