“ <service_name>已死但子系统已锁定”是什么意思?


38

我正在尝试在一个centos框上运行memcached,它运行了一段时间,但最终处于这种状态:

memcached已死,但子系统已锁定

netstat显示如下:

tcp        0      0 :::11211                    :::*                        LISTEN      
udp        0      0 0.0.0.0:11211               0.0.0.0:*                               

ps显示此:

nobody   21983  0.0  1.8  60272 19912 ?        Ssl  16:46   0:00 memcached -d -p 11211 -u nobody -c 1024 -m 64

有人知道那是什么意思吗?

Answers:


61

这意味着该服务一次运行,但已崩溃。

启动服务时,它将创建一个“锁”文件以指示该服务正在运行。这有助于避免服务的多个实例。当您停止服务时,此锁定文件将被删除。

当正在运行的服务崩溃时,锁定文件存在,但进程不再存在。因此,消息。

看看这两个地区/var/run/*.pid/var/lock/subsys/*。希望这些彼此同意。也就是说,如果((空文件)锁文件/var/lock/subsys/crond存在),则文件的第一行/var/run/crond.pid应包含为此服务运行的进程的PID。如果没有这样的进程正在运行,则说明有问题。如果某个进程确实正在运行(如您所见),但不是那个 PID,那么可能有些混乱。


如果绑定到端口并以ps列出,它是否仍在运行?
Nick Brosnahan

我扩大了答案。执行“ ls / var / lock / subsys / memcached”(我假设此文件存在),然后执行“ cat /var/run/memcached.pid”,并查看第一行。第一行是应该为memcached看到的PID。
Eddie

抱歉,我知道发生了什么事。它仍在运行。我使用“ sudo / sbin / service memcached start”启动了它,但是回顾我的历史,我使用“ / sbin / service memcached service”获得了状态。PEBCAK。一切都很好。谢谢你的帮助。
尼克·布罗斯纳汉

5
嗯,以不是root身份运行状态,您可能没有对/var/run/memcached.pid的读取权限,因此,该命令假定子系统已死,因为找不到正确的进程。
埃迪(Eddie),
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.