如何杀死cygwin中的进程?

问题描述 投票:30回答:7

嗨,我有以下过程,我不能杀死:

我在windows xp 32位运行cygwin。

我尝试发出以下命令:

/bin/kill -f 4760
/bin/kill -9 5000
kill -9 5000
kill 5000

当我写/ bin / kill -f 4760我收到消息时,'kill:无法打开pid 4760'。

当我写/ bin / kill -9 5000我收到消息'kill:5000:没有这样的过程'。

我根本不明白为什么这个过程不能被杀死。因为它有一个WINID不应该被/ bin / kill -f 4760杀死吗?

希望有人可以帮助thx :)

process cygwin kill
7个回答
23
投票

该过程很可能是从Windows锁定的。你得到的错误“无法打开PID XXX”指向此。要确认尝试使用Windows taskkill杀死它

    taskkill /PID 4760

10
投票

奇怪的是,以下在Cygwin中有效:

echo PID1 PID2 PID3 | xargs kill -f

例如:

ps -W | grep WindowsPooPoo | awk '{print $1}' | while read line; do echo $line | xargs kill -f; done;

2
投票

不同的Windows程序将处理kill以不同方式发送的信号;他们从未被设计成以与Linux / Cygwin程序相同的方式处理它们。

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

也就是说,如果你还没有,你可以幸运地以管理员模式运行你的Cygwin终端(右键单击你的快捷方式并选择“以管理员身份运行”)。


2
投票

使用此行创建一个名为killall.sh的文件

ps -W | grep $1 | awk '{print $1}' | while read line; do echo $line | xargs kill -f; done;

然后给它执行权限。

chmod 777 killall.sh

在.bash_profile中添加此行

alias killall="~/killall.sh"   (point it to the correct location)

然后你只需输入“killall [name]”


1
投票

@Donal Tobin提出的方法是正确的:

kill -f <pid>

但是,我不需要以管理员身份登录。


1
投票

killall.sh - 按进程名称杀死。

#/bin/bash
ps -W | grep "$1" | awk '{print $1}' | xargs kill -f;

用法:

$ killall <process name>

0
投票

对我来说,这个命令在Cygwin的Windows 10上不起作用:

$ kill -f 15916
bash: kill: (15916) - No such process

而不是它,您可以使用下一个命令:

$ powershell kill -f 15916
$ netstat -ano | grep ':8080' | awk '{print $5}' | xargs powershell kill -f
$ netstat -ano | grep ':8080' | awk '{print $5}' | while read pid; do powershell kill -f $pid; done;
$ netstat -ano | grep ':8080' | awk '{sub(/\r/,"",$5) ; print $5}' | while read pid; do taskkill /F /PID $pid; done;
SUCCESS: The process with PID 15916 has been terminated.
© www.soinside.com 2019 - 2024. All rights reserved.