如果“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 faux
(procps
至少来自其他实现可能会有所不同)的输出相当方便 - 它在分层树中列出了所有进程。除非有PID 环绕(另请参见wikipedia),监视器 PID 应该小于任何侦听器的 PID(当然,除非您遇到 PID 环绕)。
归档时间: |
|
查看次数: |
54512 次 |
最近记录: |