Pao*_*aJ. 14 linux admin nginx
我已经启动了nginx,当我像root一样停止时
/etc/init.d/nginx stop
Run Code Online (Sandbox Code Playgroud)
之后我输入
ps aux | grep nginx
Run Code Online (Sandbox Code Playgroud)
并获得响应 tcp LISTEN 2124 nginx WORKER
kill -9 2124 # tried with kill -QUIT 2124, kill -KILL 2124
Run Code Online (Sandbox Code Playgroud)
然后我再次打字
ps aux | grep nginx
Run Code Online (Sandbox Code Playgroud)
并获得响应tcp LISTEN 2125 nginx WORKER
等等.
如何杀死这个不朽的查克诺里斯工人?
在kill -9此过程中无事可做之后,它就死了(或注定要死)。它停留的原因是因为(a)它的父进程尚未等待它,所以内核保留进程表条目以保持其状态直到父进程保持它的状态,或者(b)该进程被卡在尚未完成的内核系统调用(通常意味着驱动程序和/或硬件有故障)。
如果是第一种情况,让父母等待孩子或终止父母,应该可以。大多数程序没有明确的方法让它们“等待孩子”,因此这不是一个选择。
在第二种情况下,最可能的解决方案是重新启动。可能有一些工具可以清除这种情况,但这并不常见。取决于内核处理的工作方式,有可能通过其他方式使其解除阻塞-但这需要了解该处理。例如,如果该进程在内核锁上被阻止,则表明某个其他进程以某种方式无限期持有,终止该其他进程可以缓解该问题。
请注意,该ps命令也可以区分这两种状态。这些以“ Z”状态显示。有关更多信息,请参见ps手册页:http : //linux.die.net/man/1/ps。它们也可能显示为“已终止”文本。