Đọc qua man 5 systemd.unit
và man 5 systemd.target
cho chúng tôi biết rằng các tệp đơn vị được sử dụng để xác định mục tiêu cũng như mọi thứ khác systemd. Không có tài liệu cụ thể về cách tạo mục tiêu , vì vậy thật khó để xác định cách thực hiện nó, nhưng nó không quá khác biệt so với việc tạo một dịch vụ.
Khi bạn tạo mục tiêu của mình, bạn sẽ cần tạo liên kết tượng trưng đến target.wants
thư mục từ thư mục dịch vụ systemd. Sau đó, bạn có thể thiết lập / khởi động mục tiêu của bạn. Đây là cách nó có thể được đưa ra ví dụ của bạn.
/etc/systemd/system/foo.target
Đây là tập tin đơn vị của mục tiêu. Nếu đồ họa được nhắm mục tiêu làm ví dụ, chúng ta có thể tạo mục tiêu của riêng mình bằng cách sử dụng nó làm cơ sở.
[Unit]
Description=Foobar boot target
Requires=multi-user.target
Wants=foobar.service
Conflicts=rescue.service rescue.target
After=multi-user.target rescue.service rescue.target
AllowIsolate=yes
Để giải thích các tùy chọn được lấy từ các trang web systemd;
Description
- Mô tả mục tiêu. Bạn nên hiểu
Requires
- Phụ thuộc cứng của mục tiêu. Bạn nên để hệ thống cơ bản bắt đầu trước khi bạn bắt đầu (các) dịch vụ của riêng bạn
Wants
- Phụ thuộc mềm. Mục tiêu không yêu cầu những thứ này để bắt đầu.
Conflicts
- Nếu một đơn vị có cài đặt Xung đột trên đơn vị khác, bắt đầu đơn vị trước sẽ dừng đơn vị sau và ngược lại.
After
- Khởi động sau các dịch vụ này
AllowIsolate
- Thực sự tùy thuộc vào bạn và môi trường của bạn. Thông tin chi tiết có sẵn trong trangsystemd.unit(5)
/etc/systemd/system/foo.target.wants/
Đây là thư mục nơi bạn sẽ liên kết các dịch vụ bạn tạo / yêu cầu cho mục tiêu của mình. Nó tương đương với Wants=
tùy chọn trong tệp đơn vị. Tạo thư mục này và sau đó tạo liên kết tượng trưng như vậy; ln -s /usr/lib/systemd/system/bar.service /etc/systemd/system/foo.target.wants/bar.service
. Điều này tạo ra một liên kết tượng trưng từ bar.service trong thư mục hệ thống đến thư mục foo.target.wants của bạn.
Tôi nghĩ rằng việc tạo một tệp đơn vị cho một dịch vụ nằm ngoài phạm vi của câu trả lời này và câu hỏi đó chắc chắn là có nhiều tài liệu hơn nên tôi sẽ bỏ nó ngay bây giờ. Khi bạn tạo tệp đơn vị của mình, chỉ cần liên kết nó vào thư mục target.wants hoặc thêm nó vào lệnh Wants=
.