如何在 cygwin 终端中终止 Windows 进程?

如何在 cygwin 终端中终止 Windows 进程?

我遇到了一个关于如何在 Windows 上的 Cygwin 中终止进程的问题。我对 Cygwin 完全陌生。但我有一个任务根本无法终止。我尝试发出以下命令:

kill 4568
kill -9 4568
/bin/kill -f 4568

由于我无法在进程运行的 Cygwin 终端中按 Ctrl+C 键,因此我已在单独的 Cygwin 终端中发出命令。我搜索了整个互联网,但没有成功。

答案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并非如此。

相关内容