杀死一个不断重启的进程

Lak*_*tha 19 process kill

如果“kill -9”不起作用怎么办?如何杀死启动新进程的脚本?无论如何都帮不了我。

我有一个Python脚本与另一个进程ID自动开始使用同一端口杀死时使用sudo kill -9 <pid>

$ lsof -i :3002
COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
python  13242 ubuntu    3u  IPv4  64592      0t0  TCP localhost:3002 (LISTEN)
$ sudo kill -9 13242
$ lsof -i :3002
COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
python  16106 ubuntu    3u  IPv4  74792      0t0  TCP localhost:3002 (LISTEN)
$ sudo kill 16106
$ lsof -i :3002
COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
python  16294 ubuntu    3u  IPv4  75677      0t0  TCP localhost:3002 (LISTEN)
Run Code Online (Sandbox Code Playgroud)

这不是僵尸进程。

$ ps -Al

4 S     0 16289     1  0  80   0 - 12901 poll_s ?        00:00:00 sudo
4 S  1000 16293 16289  0  80   0 -  1100 wait   ?        00:00:00 sh
0 S  1000 16294 16293  0  80   0 - 34632 poll_s ?        00:00:00 python
Run Code Online (Sandbox Code Playgroud)

我什至尝试sudo pkill -f <processname>过没有运气。它不想死。

更新:

它的父进程是sh其母公司是sudo在上表中提到。我不确定突然杀死这些是否安全。这也是一个共享的 ubuntu 服务器。

pet*_*rph 28

另一个进程 ID自动启动意味着它是一个不同的进程。因此有一个父进程,它监视它的子进程,如果一个进程死了,它会被父进程重生。如果要完全停止服务,请了解如何停止父进程。杀死它SIGKILL当然是一种选择,但可能不是 The Right One TM,因为服务监视器可能需要进行一些清理才能正确关闭。

要找到监视器进程,您可能需要检查整个进程列表,因为实际的侦听器可能会与它们的父级分离(通常通过fork() + setsid()组合)。在这种情况下,我发现ps fauxprocps至少来自其他实现可能会有所不同)的输出相当方便 - 它在分层树中列出了所有进程。除非有PID 环绕(另请参见wikipedia),监视器 PID 应该小于任何侦听器的 PID(当然,除非您遇到 PID 环绕)。

  • 伟大的。`ps -faux` 帮助从父级开始杀戮。您能用评论中的解决方案更新您的答案吗? (2认同)

Ram*_*esh 5

如果知道进程的监听端口,可以使用fuserwith -kflag。

就像是,

fuser -k 3002/tcp
Run Code Online (Sandbox Code Playgroud)