Điều này có thể khó khăn, bởi vì bạn có thể có các trường hợp riêng biệt của cùng một quá trình sống độc lập. Ví dụ: máy chủ lắng nghe trên các cổng khác nhau hoặc dịch vụ chạy như những người dùng khác nhau. Để phân biệt giữa các trường hợp này, bạn cần gán cho mỗi thẻ một thẻ duy nhất. Thẻ thường là một tệp, nhưng nó có thể là một ổ cắm cục bộ trong không gian tên trừu tượng, cổng TCP, v.v. - bất kỳ định danh duy nhất nào cũng được. Khi thẻ là một tệp, nó có thể là một tệp thông thường chứa ID tiến trình (pidfile) hoặc ống hoặc ổ cắm có tên mà tệp đang nghe, v.v. Lý tưởng nhất, thẻ là điểm cuối giao tiếp cho phép khách hàng kết nối để quá trình đó.
Mỗi loại thẻ khác nhau này dẫn đến một cách khác nhau để kiểm tra xem phiên bản bạn đang tìm kiếm có hoạt động hay không. Ví dụ, với một ổ cắm tệp cục bộ, hãy thử kết nối với nó và bắt đầu quá trình nếu không có quá trình lắng nghe trên ổ cắm đó. Nếu thẻ là pidfile, hãy kiểm tra xem có một quy trình với ID quy trình đó không, nhưng hãy cẩn thận rằng đây là quy trình dễ vỡ, vì nếu quy trình đã chết, có thể có một quy trình không liên quan đã sử dụng lại ID của nó. Xin lưu ý rằng nếu hai khách hàng cố gắng đạt được quy trình trong một khung thời gian ngắn, cả hai có thể thấy rằng quy trình không tồn tại và cả hai đều cố gắng bắt đầu quy trình; bảo vệ đúng cách khỏi điều kiện cuộc đua này có thể là khó khăn.
Việc quản lý các trường hợp sẽ dễ dàng hơn khi tất cả chúng được bắt đầu bởi cùng một quy trình giám sát và quy trình giám sát đó phát hiện khi các cá thể chết và phản ứng tương ứng. Nhiều chương trình giám sát dịch vụ có thể làm điều này.
Nếu chương trình không phản hồi trên điểm cuối giao tiếp đã biết và nó không được quản lý bởi chương trình giám sát, thẻ của người nghèo là pidfile: một tệp chứa ID tiến trình. Khi bạn bắt đầu quá trình, hãy viết pid vào một tệp có tên được sắp xếp trước. Khi bạn cần quá trình tồn tại, hãy đọc pidfile và xem liệu có một quy trình với pid đó không. Khi bạn giết quá trình, xóa pidfile. Vấn đề nổi bật nhất với pidfile không được giám sát là nếu quá trình này chết, pid của nó có thể được sử dụng lại bởi một số quy trình không liên quan. Ít nhất bạn nên kiểm tra tên quy trình hoặc quy trình thực thi để đảm bảo rằng bạn đang nói đúng quy trình. Nhiều biến thể unix có lệnh pgrep :pgrep SOMENAME
liệt kê các quy trình có tên chứa SOMENAME dưới dạng một chuỗi con, với các tùy chọn bổ sung để giới hạn cho một người dùng cụ thể, để yêu cầu một kết hợp chính xác, để thay đổi một số khái niệm có thể có của tên quy trình có thể sử dụng, v.v.
ps -ef | grep -v grep | grep "process_name" || run_command_here