我有一个关于如何在Windows上的Cygwin中杀死进程的问题。我对Cygwin完全陌生。但是我有一项我根本无法杀死的任务。我尝试发出以下命令:
kill 4568
kill -9 4568
/bin/kill -f 4568
我已经在单独的Cygwin终端中发出了命令,因为我无法在运行该进程的Cygwin终端中按Ctrl + C组合键。我在整个互联网上搜索都没有成功。
我有一个关于如何在Windows上的Cygwin中杀死进程的问题。我对Cygwin完全陌生。但是我有一项我根本无法杀死的任务。我尝试发出以下命令:
kill 4568
kill -9 4568
/bin/kill -f 4568
我已经在单独的Cygwin终端中发出了命令,因为我无法在运行该进程的Cygwin终端中按Ctrl + C组合键。我在整个互联网上搜索都没有成功。
Answers:
您可以尝试:
taskkill /pid 4568
taskkill /im:{name-of-executable}
也是有用的。
taskkill /im <name-of-exe> /f
更加有用。
taskkill //im <name-of-exe>
(注意,需要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
但不能杀死它。
cat /proc/${ZID}/winpid
,非常高兴知道。并且比使用解决方案要快ps -aW | grep ...
,至少在Win 7 x64下在我的cygwin上是如此。但是对于PsKill64,我认为您需要终止-t
子进程,并且taskkill
还可以终止子进程。
-t
杀死后代。更正的答案。
在Git Bash中,我使用:
targetProcess='chromedriver.exe';
ps -W | grep -i ${targetProcess} | awk '{print $1}' | while read pid; do taskkill //PID ${pid}; done;
我没有在Cygwin中尝试过,但是我想它也可以在Cygwin中工作。