30

嗨,我有以下我无法杀死的过程:

要杀死的进程。

我在 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 :)

4

7 回答 7

24

该进程很可能从 Windows 被锁定。您收到“无法打开 PID XXX”的错误指出了这一点。确认尝试使用 windows taskkill 杀死它

    taskkill /PID 4760
于 2012-06-04T07:27:36.253 回答
12

奇怪的是,以下在 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;
于 2015-07-21T02:53:15.007 回答
2

不同的 Windows 程序会以不同的方式处理kill发送的信号;它们从来没有像 Linux/Cygwin 程序那样被设计用来处理它们。

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

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

于 2012-06-05T13:55:49.090 回答
2

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

kill -f <pid>

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

于 2014-08-19T14:52:51.810 回答
2

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

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

用法:

$ killall <process name>
于 2018-05-16T02:52:08.107 回答
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]”

于 2017-06-23T20:16:42.573 回答
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.
于 2019-04-10T06:35:08.243 回答