Những gì <dịch vụ tên dịch vụ đã chết nhưng các khóa con bị khóa có nghĩa là gì?


38

Tôi đang cố chạy memcached trên một hộp centos và nó chạy được một lúc, nhưng rồi kết thúc ở trạng thái này:

memcached chết nhưng bị khóa

netstat cho thấy điều này:

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

ps cho thấy điều này:

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

Co ai biêt no nghia la gi không?

Câu trả lời:


61

Điều này có nghĩa là dịch vụ đã chạy một lúc, nhưng đã bị hỏng.

Khi bạn bắt đầu một dịch vụ, nó sẽ tạo một tệp "khóa" để cho biết rằng dịch vụ đang chạy. Điều này giúp tránh nhiều trường hợp của dịch vụ. Khi bạn dừng một dịch vụ, tệp khóa này sẽ bị xóa.

Khi một dịch vụ đang chạy gặp sự cố, tệp khóa tồn tại nhưng quá trình không còn tồn tại. Như vậy, tin nhắn.

Nhìn vào hai khu vực /var/run/*.pid/var/lock/subsys/*. Những dự kiến ​​sẽ đồng ý với nhau. Đó là, nếu tệp khóa (emtpy) /var/lock/subsys/crondtồn tại, thì dòng đầu tiên của tệp /var/run/crond.piddự kiến ​​sẽ chứa PID của quá trình đang chạy cho dịch vụ này. Nếu không có quá trình như vậy đang chạy, thì có gì đó không ổn. Nếu một quá trình thực sự đang chạy (như bạn thấy) nhưng đó không phải PID, thì có lẽ có gì đó bị nhầm lẫn.


Nó vẫn không chạy nếu nó bị ràng buộc với một cổng và được liệt kê trong ps?
Nick Brosnahan

Tôi mở rộng câu trả lời của mình. Làm "ls / var / lock / subsys / memcached" (Tôi giả sử tập tin này tồn tại) và sau đó "cat /var/run/memcached.pid" và nhìn vào dòng đầu tiên. Dòng đầu tiên là PID mà bạn sẽ thấy để ghi nhớ.
Eddie

Xin lỗi, tôi đã tìm ra những gì đang xảy ra. Nó vẫn đang chạy. Tôi đã khởi chạy nó bằng cách sử dụng "sudo / sbin / dịch vụ memcached start", nhưng nhìn lại lịch sử của mình, tôi đã nhận được trạng thái bằng cách sử dụng "/ sbin / dịch vụ memcached dịch vụ". PEBCAK. Tất cả đều tốt. Cảm ơn bạn đã giúp đỡ.
Nick Brosnahan

5
À, và chạy trạng thái không phải là root, bạn có thể chưa đọc quyền truy cập vào /var/run/memcached.pid, do đó, lệnh cho rằng hệ thống con đã chết vì không thể xác định đúng quy trình.
Eddie
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.