如何在Cygwin终端中杀死Windows进程?


18

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

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

我已经在单独的Cygwin终端中发出了命令,因为我无法在运行该进程的Cygwin终端中按Ctrl + C组合键。我在整个互联网上搜索都没有成功。


您启动了什么过程,您是如何开始的?
me_and 2012年

Answers:


25
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

您可能要使用ps -W | awk 'BEGIN{ IGNORECASE=1;} /calc.exe/,NF=1' | xargs kill -fWindows ,因为它不区分大小写
tricasse


5

如果您只希望使用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。


您关于/ bin / kill vs shell kill的说明非常有用。谢谢
菲尔(Phil)

2

(从我的回答类似的SO问题):

不同的Windows程序将以不同的方式处理终止发送的信号。从来没有像Linux / Cygwin程序那样设计它们来处理它们。

杀死Windows程序的唯一可靠方法是使用Windows特定工具,例如任务管理器或进程资源管理器。

也就是说,如果您还没有,可以在管理员模式下运行Cygwin终端,这可能是不错的选择(右键单击快捷方式,然后选择“以管理员身份运行”)。


1

这里要考虑两件事:

  1. 获取正确的PID,即WINPID。
  2. 使用正确的工具。

要获取正确的WINPID,请使用cat /proc/<PID>/winpid。即运行此:

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

然后马上做另一个ps

正确的工具是sysinternals PsKill64.exe -t <winpid>,它也可以杀死脚本过程的所有后代,kill但不能杀死它。


1
您已投票赞成cat /proc/${ZID}/winpid,非常高兴知道。并且比使用解决方案要快ps -aW | grep ...,至少在Win 7 x64下在我的cygwin上是如此。但是对于PsKill64,我认为您需要终止-t子进程,并且taskkill还可以终止子进程。
244

是的,您还需要-t杀死后代。更正的答案。
not2qubit

0

如果您有一个Windows程序,该程序是cygwin bash进程下的子进程,则可以使用taskkill /F /PID [the cygwin process id] /T它杀死进程树,而无需ps通过awketc 获取Window PID 。
这已在Win7 x64下进行了测试。

# Simple example in cygwin:
> notepad.exe &
> pid=$!
...
> taskkill /F /PID $pid /T

当然,您也可以使用窗口PID。


0

在Git Bash中,我使用:

targetProcess='chromedriver.exe';
ps -W | grep -i ${targetProcess} | awk '{print $1}' | while read pid; do taskkill //PID ${pid}; done;

我没有在Cygwin中尝试过,但是我想它也可以在Cygwin中工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.