systemd là một người quản lý công việc. Trang người đàn ông không chính xác như cách mọi thứ hoạt động.
Khi bạn khởi động, những gì systemd thực hiện là xây dựng một giao dịch bao gồm các công việc cho công việc neo (tức là bắt đầu công việc cho default.target). Những gì tất cả những phụ thuộc và mối quan hệ này làm là xác định cách thức và những công việc sẽ được kích hoạt. Đặt hàng xác định (các) công việc mà mọi công việc khác sẽ chờ đợi. Do đó, đơn vị default.target là trung tâm của tất cả điều này, đó là lý do tại sao khi cho phép các đơn vị bạn sử dụng một phụ thuộc ngược mà thông qua systemctl cho phép tạo ra một liên kết biểu tượng hệ thống tệp biểu thị một hệ thống phụ thuộc chuyển tiếp có thể đi theo (cũng là lý do tại sao bạn cần liên kết hệ thống tệp trong địa điểm đầu tiên). Tương tự là khi bạn tự khởi động một số đơn vị, thì đơn vị đó là neo và giao dịch được tính toán.
Không đi quá chi tiết, tôi sẽ giải thích những gì Yêu cầu = và Sau = làm.
Yêu cầu = sẽ khiến systemd kích hoạt công việc bắt đầu cho đơn vị được yêu cầu khi bạn bắt đầu kích hoạt công việc (rõ ràng hoặc thông qua một phụ thuộc: không có sự phân biệt trong nội bộ). Nó cũng có đặc tính kích hoạt công việc dừng đối với bạn khi đơn vị này bị dừng (lưu ý: đã dừng, không tự tắt) hoặc khởi động lại. Điều này có nghĩa là nếu một số phụ thuộc / systemctl khiến nó dừng / khởi động lại, bạn cũng sẽ dừng / khởi động lại. Tuy nhiên, nếu nó tự đi xuống, bạn sẽ không dừng lại, vì không có việc làm và sự thay đổi trạng thái xảy ra mà không có sự tham gia của hệ thống. Đó là nơi bạn sẽ sử dụng BindsTo = (tương tự như các đơn vị thiết bị, có thể không hoạt động mà không có sự tham gia của systemd, vì những lý do rõ ràng).
Bây giờ, việc sử dụng After = được khuyến nghị là Request = alone là không phù hợp với những gì nó làm: hủy yêu cầu nếu công việc bắt đầu thất bại. Tuy nhiên, việc hủy này chỉ thực hiện các công việc wrt, tức là nếu đơn vị kia không xác định thứ tự, systemd kích hoạt song song và nếu công việc bắt đầu của nó kết thúc trước khi công việc bắt đầu của bạn thất bại, thực tế nó sẽ không bị hủy (thực tế không thể hủy bỏ) . Sử dụng After = có nghĩa là công việc khác tiếp tục chờ cho đến khi công việc bắt đầu của đơn vị được yêu cầu kết thúc và tùy thuộc vào kết quả, nếu thất bại, công việc bắt đầu chờ đợi của đơn vị của bạn bị hủy với kết quả công việc JOB_DEPENDENCY (tại sao bạn sử dụng màu vàng [DEPEND] lúc khởi động cho những trường hợp như vậy). Do đó, hiệu ứng vô hiệu này là không xác định nếu không sử dụng After =.
Đây là lý do tại sao sử dụng Wants = không có After = sẽ ổn nếu bạn không muốn chờ đợi sự khởi động của đơn vị khác: vì không có sự vô hiệu ở đó, vì vậy không có cuộc đua. Trong trường hợp đó, nó không hơn một cơ chế đồng bộ hóa.
Ngoài ra, bạn cũng có thể kích hoạt cả khi khởi động và không yêu cầu lẫn nhau và chỉ xác định thứ tự, trong trường hợp đó, khi cả hai được kéo như một phần của cùng một giao dịch, chúng sẽ được đặt hàng (hoặc nếu công việc cho người khác được kích hoạt trong khi công việc cho đơn vị mà nó muốn chạy sau khi chạy, trước tiên nó sẽ đợi nó kết thúc, trên các giao dịch).
Bây giờ nếu không có việc làm, đặt hàng không có hiệu lực cho các đơn vị nói. Tuy nhiên, thường có một công việc, do hậu quả của việc sử dụng các phụ thuộc như Request = và Wants =, hoặc cả hai bị kéo vào một lúc và xác định một số thứ tự, trong trường hợp họ chờ đợi công việc của đơn vị khác.