¿Qué significa "<nombre_servicio> muerto pero subsistema bloqueado"?

38

Estoy tratando de ejecutar memcached en una caja de centos y se ejecuta durante un tiempo, pero luego termina en este estado:

memcached muerto pero subsys bloqueado

netstat muestra esto:

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

ps muestra esto:

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

Alguien sabe que significa eso?

Nick Brosnahan
fuente

Respuestas:

61

Esto significa que el servicio se estaba ejecutando una vez, pero se ha bloqueado.

Cuando inicia un servicio, crea un archivo de "bloqueo" para indicar que el servicio se está ejecutando. Esto ayuda a evitar múltiples instancias del servicio. Cuando detiene un servicio, este archivo de bloqueo se elimina.

Cuando un servicio en ejecución falla, el archivo de bloqueo existe pero el proceso ya no existe. Así, el mensaje.

Mira las dos áreas /var/run/*.pidy /var/lock/subsys/*. Se espera que estos estén de acuerdo el uno con el otro. Es decir, si existe el archivo de bloqueo (archivo emtpy) /var/lock/subsys/crond, /var/run/crond.pidse espera que la primera línea del archivo contenga el PID del proceso que se ejecuta para este servicio. Si no se está ejecutando dicho proceso, entonces algo está mal. Si un proceso se está ejecutando (como puede ver) pero no es ese PID, entonces es probable que algo esté confundido.

Eddie
fuente
¿Todavía no se está ejecutando si está vinculado a un puerto y aparece en ps?
Nick Brosnahan
Extendí mi respuesta. Haga "ls / var / lock / subsys / memcached" (supongo que este archivo existe) y luego "cat /var/run/memcached.pid" y mire la primera línea. La primera línea es el PID que debe esperar ver para memcached.
Eddie
Lo siento, descubrí lo que estaba pasando. Seguía funcionando. Lo lancé usando "sudo / sbin / service memcached start", pero mirando hacia atrás en mi historial, obtuve el estado usando "/ sbin / service memcached service". PEBCAK Todo está bien. Gracias por tu ayuda.
Nick Brosnahan
55
Ah, y al ejecutar el estado no como root, es posible que no haya tenido acceso de lectura a /var/run/memcached.pid, por lo tanto, el comando asumió que el subsistema estaba muerto porque no pudo localizar el proceso correcto.
Eddie