O que significa "<service_name> morto, mas subsys bloqueado" significa?

38

Eu estou tentando executar o memcached em uma caixa de centos e ele é executado por um tempo, mas depois acaba neste estado:

memcached morto, mas subsys bloqueado

O netstat mostra isso:

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

ps mostra isso:

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

Alguém sabe o que isso significa?

Nick Brosnahan
fonte

Respostas:

61

Isso significa que o serviço estava em execução ao mesmo tempo, mas falhou.

Quando você inicia um serviço, ele cria um arquivo de "bloqueio" para indicar que o serviço está sendo executado. Isso ajuda a evitar várias instâncias do serviço. Quando você interrompe um serviço, esse arquivo de bloqueio é removido.

Quando um serviço em execução falha, o arquivo de bloqueio existe, mas o processo não existe mais. Assim, a mensagem.

Olhe para as duas áreas /var/run/*.pide /var/lock/subsys/*. Espera-se que eles concordem entre si. Ou seja, se o arquivo de bloqueio (arquivo emtpy) /var/lock/subsys/crondexistir, a primeira linha do arquivo /var/run/crond.piddeverá conter o PID do processo em execução para este serviço. Se esse processo não estiver em execução, algo está errado. Se um processo está realmente em execução (como você vê), mas não é esse PID, então provavelmente algo está confuso.

Eddie
fonte
Ele ainda não está sendo executado se estiver vinculado a uma porta e listado no ps?
Nick Brosnahan
Eu estendi minha resposta. Faça "ls / var / lock / subsys / memcached" (presumo que este arquivo exista) e, em seguida, "cat /var/run/memcached.pid" e observe a primeira linha. A primeira linha é o PID que você deve esperar para o memcached.
Eddie
Desculpe, eu descobri o que estava acontecendo. Ainda estava correndo. Eu o iniciei usando "sudo / sbin / service memcached start", mas, olhando para trás no meu histórico, obtive o status usando "/ sbin / service memcached service". PEBCAK. Tudo está bem. Obrigado pela ajuda.
Nick Brosnahan
5
Ah, e executando o status não como root, você pode não ter acesso de leitura a /var/run/memcached.pid; portanto, o comando assumiu que o subsistema estava morto porque não conseguiu localizar o processo correto.
Eddie