Tôi vẫn đang nắm bắt được với systemd và đã gặp phải điều gì đó. Đó không phải là một vấn đề quá lớn, nhưng tôi muốn tìm hiểu thêm về cách thức này. Tôi không thể tìm thấy bất kỳ tài liệu tham khảo nào ở nơi này.
Trước hết, tôi hiểu rằng các tệp đơn vị tùy chỉnh cho các dịch vụ nên đi vào /etc/systemd/system
. Tuy nhiên, sẽ rất tốt cho việc quản lý các máy chủ của chúng tôi nếu các tệp đơn vị có thể được đặt ở nơi khác.
Trong tài liệu, tôi thấy rằng bạn có thể 'liên kết' các tệp đơn vị như vậy:
systemctl link /path/to/servicename.service
Điều này sẽ tạo ra một liên kết đến ở trên /etc/systemd/system
. Bây giờ bạn có thể bắt đầu / dừng dịch vụ này. Nhìn bề ngoài, đây có vẻ là một cách tốt để chúng tôi quản lý các dịch vụ của mình.
Tuy nhiên, cố gắng kích hoạt tệp đơn vị 'được liên kết' như vậy sẽ không thành công:
root@test1:/etc/systemd/system# systemctl link /root/myservice.service
Created symlink from /etc/systemd/system/myservice.service to /root/myservice.service.
root@test1:/etc/systemd/system# systemctl status myservice.service
* myservice.service - My Test Service
Loaded: loaded (/root/myservice.service; linked; vendor preset: enabled)
root@test1:/etc/systemd/system# systemctl enable myservice.service
Failed to execute operation: No such file or directory
Sử dụng cùng một tệp đơn vị, nhưng được sao chép vào /etc/systemd/system
thay vì được liên kết trong, bạn nhận được:
root@test1:/etc/systemd/system# cp -p /root/myservice.service .
root@test1:/etc/systemd/system# systemctl daemon-reload
root@test1:/etc/systemd/system# systemctl status myservice.service
* myservice.service - My Test Service
Loaded: loaded (/etc/systemd/system/myservice.service; disabled; vendor preset: enabled)
root@test1:/etc/systemd/system# systemctl enable myservice.service
Created symlink from /etc/systemd/system/multi-user.target.wants/myservice.service to /etc/systemd/system/myservice.service.
Từ đó, dường như không thể cho phép liên kết trong các tệp đơn vị được gọi khi khởi động hệ thống.
Nếu đây là trường hợp, điểm của chức năng 'liên kết' là gì? Từ các tài liệu, nó nói:
liên kết PHIM
Liên kết một tệp đơn vị không có trong đường dẫn tìm kiếm tệp đơn vị vào đường dẫn tìm kiếm tệp đơn vị. Điều này đòi hỏi một đường dẫn tuyệt đối đến một tập tin đơn vị. Hiệu ứng này có thể được hoàn tác với vô hiệu hóa. Tác dụng của lệnh này là một tệp đơn vị có sẵn để bắt đầu và các lệnh khác mặc dù nó không được cài đặt trực tiếp trong đường dẫn tìm kiếm đơn vị.
systemctl enable
cũng sẽ làmsystemctl link
, vì vậy không cần phải gõ 2 lệnh ;-)