Was bedeutet "<service_name> dead but subsys locked"?

38

Ich versuche, memcached auf einem Centos-Feld auszuführen, und es wird eine Weile ausgeführt, aber es endet dann in diesem Zustand:

memcached tot, aber subsys gesperrt

netstat zeigt dies:

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

ps zeigt dies:

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

Weiß jemand was das bedeutet?

Nick Brosnahan
quelle

Antworten:

61

Dies bedeutet, dass der Dienst einmal ausgeführt wurde, aber abgestürzt ist.

Wenn Sie einen Dienst starten, wird eine Sperrdatei erstellt, die angibt, dass der Dienst ausgeführt wird. Dies hilft, mehrere Instanzen des Dienstes zu vermeiden. Wenn Sie einen Dienst beenden, wird diese Sperrdatei entfernt.

Wenn ein ausgeführter Dienst abstürzt, ist die Sperrdatei vorhanden, der Prozess ist jedoch nicht mehr vorhanden. So lautet die Botschaft.

Schauen Sie sich die beiden Bereiche an /var/run/*.pidund /var/lock/subsys/*. Es wird erwartet, dass diese miteinander übereinstimmen. Wenn die Sperrdatei (emtpy file) /var/lock/subsys/crondvorhanden ist, /var/run/crond.pidwird erwartet, dass die erste Zeile der Datei die PID des Prozesses enthält, der für diesen Dienst ausgeführt wird. Wenn kein solcher Prozess ausgeführt wird, stimmt etwas nicht. Wenn ein Prozess tatsächlich läuft (wie Sie sehen), es aber nicht diese PID ist, dann ist wahrscheinlich etwas verwirrt.

Eddie
quelle
Läuft es nicht noch, wenn es an einen Port gebunden und in ps aufgelistet ist?
Nick Brosnahan
Ich habe meine Antwort erweitert. Führen Sie "ls / var / lock / subsys / memcached" (ich nehme an, dass diese Datei existiert) und dann "cat /var/run/memcached.pid" aus und sehen Sie sich die erste Zeile an. Die erste Zeile ist die PID, die Sie für memcached erwarten sollten.
Eddie
Entschuldigung, ich habe herausgefunden, was los ist. Es lief immer noch. Ich habe es mit "sudo / sbin / service memcached start" gestartet, aber in meinem Verlauf habe ich den Status mit "/ sbin / service memcached service" erhalten. PEBCAK. Alles ist gut. Danke für Ihre Hilfe.
Nick Brosnahan
5
Ah, und wenn Sie den Status nicht als Root ausführen, hatten Sie möglicherweise keinen Lesezugriff auf /var/run/memcached.pid. Daher ging der Befehl davon aus, dass das Subsystem tot war, weil es den richtigen Prozess nicht finden konnte.
Eddie