How to kill a process in cygwin?

不羁岁月 提交于 2019-12-03 10:37:08

问题


Hi i have the following process which i cant kill:

I am running cygwin in windows xp 32 bit.

I have tried issuing the following commands:

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

When i write /bin/kill -f 4760 i get the message, 'kill: couldn't open pid 4760'.

When i write /bin/kill -9 5000 i get the message, 'kill: 5000: No such process'.

I simply don't understand why this process cant be killed. Since it has a WINID shouldnt it be killed by /bin/kill -f 4760?

hope someone can help thx :)


回答1:


The process is locked from Windows most likely. The error you are getting "couldnt open PID XXX" points to this. To confirm try killing it with windows taskkill

    taskkill /PID 4760



回答2:


Strangely, the following works in Cygwin:

echo PID1 PID2 PID3 | xargs kill -f

For example:

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



回答3:


Different Windows programs will handle the signals that kill sends differently; they've never been designed to deal with them in the same way that Linux/Cygwin programs are.

The only reliable method for killing a Windows program is to use a Windows specific tool, such as Task Manager or Process Explorer.

That said, if you've not already, you may have luck with running your Cygwin terminal in administrator mode (right click on your shortcut and select "Run as administrator").




回答4:


Create a file called killall.sh with this line

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

Then give it execute permissions.

chmod 777 killall.sh

In your .bash_profile add this line

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

Then you just have to type "killall [name]"




回答5:


The method presented by @Donal Tobin is correct:

kill -f <pid>

However, I don't need to log in as administrator.




回答6:


killall.sh - Kill by process name.

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

Usage:

$ killall <process name>



回答7:


For me this command does not work on Windows 10 in Cygwin:

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

Instead of it, you can use next commands:

$ 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.


来源:https://stackoverflow.com/questions/10877652/how-to-kill-a-process-in-cygwin

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!