2016-08-19 21 views

Trả lời

14

Đơn vị Type=oneshot dịch vụ:

  • khối trên một hoạt động khởi đầu cho đến khi thoát quá trình đầu tiên, và trạng thái của nó sẽ được báo cáo là "kích hoạt";

  • khi quy trình đầu tiên thoát, chuyển đổi từ "kích hoạt" thành "không hoạt động", trừ khi RemainAfterExit=true được đặt (trong trường hợp nó trở thành "hoạt động" không có quy trình!);

  • có thể không có ExecStart= nhưng có ExecStop= (hữu ích để sắp xếp mọi thứ để chạy khi tắt hệ thống).

Đơn vị Type=simple dịch vụ:

  • không chặn trên một hoạt động khởi đầu; (i e trở thành "active" ngay sau khi forking tắt quá trình đầu tiên, thậm chí nếu nó vẫn được khởi tạo..!)

  • khi quy trình đầu tiên thoát, chuyển đổi từ "hoạt động" sang "không hoạt động" (không có tùy chọn RemainAfterExit=);

  • thường không được khuyến khích vì không có cách nào để phân biệt các tình huống như "đã thoát khi bắt đầu vì lỗi cấu hình" từ "bị lỗi sau 500ms thời gian chạy" và tương tự.

Cả Type=oneshotType=simple đơn vị:

  • bỏ qua bất kỳ trẻ em của quá trình đầu tiên, do đó, không sử dụng các chế độ này với forking quá trình (lưu ý: bạn có thể sử dụng Type=oneshot với KillMode=none, nhưng chỉ làm điều này nếu bạn biết bạn đang làm gì).
+1

intelfx nói rằng đơn vị dịch vụ 'Type = oneshot'" có thể không có 'ExecStart =' ". Đây không phải là sự thật. Thực tế, các dịch vụ kiểu 'oneshot' có thể có nhiều chỉ thị' ExecStart = '. Xem bất kỳ trang man nào gần đây cho 'systemd.service' để biết thêm thông tin. – rlandster

+0

@rlandster: Tại sao điều này "không đúng"? [systemd.service (5)] (https://www.freedesktop.org/software/systemd/man/systemd.service.html#ExecStart=) nói dưới 'ExecStart =': "Trừ khi Type = là oneshot, chính xác một lệnh phải được đưa ra. Khi Type = oneshot được sử dụng, không thể xác định được số không hoặc nhiều lệnh. " – intelfx

-1

Từ quan điểm của hệ thống, Type=simple là loại lửa và quên. Systemd chỉ cung cấp một quy trình được xác định trong ExecStart= và tiếp tục, ngay cả khi quá trình không khởi động được.

+0

Các quá trình 'Type = simple' vẫn được giám sát bởi systemd và sẽ được khởi động lại tùy thuộc vào giá trị của' Restart'. –

Các vấn đề liên quan