Pkill -f doesn't work for process killing

心不动则不痛 提交于 2020-11-30 10:32:53

问题


I have this process running:

342 pts/2    T    0:00 sh -c sudo screen /usr/bin/python /usr/bin/btdownloadcurses "http://zoink.it/torrent/732A4A9B54B7E3A916C2835D936D985942F65A6D.torrent" --display_interval 20 --saveas "/srv/"
343 pts/2    T    0:00 sudo screen /usr/bin/python /usr/bin/btdownloadcurses http://zoink.it/torrent/732A4A9B54B7E3A916C2835D936D985942F65A6D.torrent --display_interval 20 --saveas /srv/
344 pts/2    T    0:00 screen /usr/bin/python /usr/bin/btdownloadcurses http://zoink.it/torrent/732A4A9B54B7E3A916C2835D936D985942F65A6D.torrent --display_interval 20 --saveas /srv/

I tried to run:

pkill -f http://zoink.it/torrent/732A4A9B54B7E3A916C2835D936D985942F65A6D.torrent

But the process still running.
How do I force kill the processes that contain: "http://zoink.it/torrent/732A4A9B54B7E3A916C2835D936D985942F65A6D.torrent" ?


Question as edited below:

ps ax | grep 'Momomoko.E01.140011.HDTV.H264.720p.mp4'

I want to kill all process that contain the above string.

I tried running the above line, and it returns three results:

  342 pts/2    T    0:00 sh -c sudo screen /usr/bin/python /usr/bin/btdownloadcurses "http://zoink.it/torrent/732A4A9B54B7E3A916C2835D936D985942F65A6D.torrent" --display_interval 20 --saveas "/srv/Momomoko.E01.140011.HDTV.H264.720p.mp4"
  343 pts/2    T    0:00 sudo screen /usr/bin/python /usr/bin/btdownloadcurses http://zoink.it/torrent/732A4A9B54B7E3A916C2835D936D985942F65A6D.torrent --display_interval 20 --saveas /srv/Momomoko.E01.140011.HDTV.H264.720p.mp4
  344 pts/2    T    0:00 screen /usr/bin/python /usr/bin/btdownloadcurses http://zoink.it/torrent/732A4A9B54B7E3A916C2835D936D985942F65A6D.torrent --display_interval 20 --saveas /srv/Momomoko.E01.140011.HDTV.H264.720p.mp4

How do I run this line:

ps ax | grep 'Momomoko.E01.140011.HDTV.H264.720p.mp4'

..with php, and kill -9 all the matching processes?


回答1:


Try to use kill command rather

kill -9 <pid>

It will work for sure, cause I have tried it myself and very handy all times.

Use the following in a script file then run for loop with kill command,

ps|grep torrent|cut -f1 -d' '

like this for loop as shown below, as exact working copy from my system;

for p in `ps|grep torrent|cut -f1 -d' '`; do
   kill -9 $p
done

I hope this will help you finally.




回答2:


As you can see, the process are being run with screen command.

sh -c sudo screen /usr/bin/python
sudo screen /usr/bin/python
screen /usr/bin/python

Due to this you cannot kill the process with the command what you have used.

To kill the process, first search the PID process ID of the process and then use kill command with the PID. Like

$ kill -9 342

Also looking from your process list, it is visible that you have started the same process many times with different permission. So I suggest you kill all except one that is needed.

EDIT : This single command would suffice:

$ ps ax | grep 'Momomoko.E01.140011.HDTV.H264.720p.mp4' | awk -F ' ' '{print $1}' | xargs sudo kill -9

Here is what it does :

  1. ps ax : list the process 2. grep : grep for the requred process name 3. awk : to get only the PID's of the process from the grep ouput 4. xargs sudo kill -9 : xargs will pass one by one PID number to kill command



回答3:


If you have that zombie process open in a terminal, you can Ctrl+z it, which on most shells lets the process run in the background and outputs something like:

[1]  + 69880 suspended  someprocess

You can then actually kill it with:

kill -9 69880

the same id that was shown when suspended.



来源:https://stackoverflow.com/questions/26902079/pkill-f-doesnt-work-for-process-killing

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