我遇到了一个关于如何在 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
这里有两件事需要考虑:
- 获取正确的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
并非如此。