Tôi đang cố gắng thiết lập một dịch vụ mới (trong Debian Jessie) cần thiết lập một số gắn kết nơi cấu hình mạng được lưu trữ và do đó dịch vụ này phải hoàn thành trước khi bắt đầu dịch vụ mạng.
Tôi đã thử như sau:
[Unit]
Description=mount/repair remaining filesystems (all persistent fs beyond "/")
#Before=network-pre.target
Before=networking.service
[Service]
Type=oneshot
ExecStart=/opt/intermodul-mounts/start.sh
TimeoutSec=0
RemainAfterExit=yes
[Install]
RequiredBy=networking.service
Sử dụng systemd-analyze plot
tôi có thể thấy rằng dịch vụ của tôi bắt đầu, nhưng networking.service
bắt đầu sớm hơn khoảng 3 giây:
Rõ ràng cấu hình của tôi là sai, nhưng tôi đang gặp khó khăn trong việc tìm kiếm vấn đề ... Bất kỳ trợ giúp nào đều được đánh giá cao ..
Cập nhật
Tôi hiện đã giải quyết nó bằng cách thay đổi cấu hình dịch vụ để bắt đầu trước local-fs.target
thay vì networking.service
:
[Unit]
DefaultDependencies=no
Description=mount/repair remaining filesystems (all persistent fs beyond "/")
Before=local-fs.target
[Service]
Type=oneshot
ExecStart=/opt/intermodul-mounts/start.sh
TimeoutSec=0
RemainAfterExit=yes
[Install]
RequiredBy=local-fs.target
Tuy nhiên, tôi muốn hiểu tại sao cấu hình đầu tiên của tôi không hoạt động như mong đợi ...?
/etc/network/interfaces
có tham chiếu đến ip-up
các tập lệnh nằm trong một phân vùng khác. Phân vùng đó được gắn bằng một kịch bản phức tạp /opt/intermodul-mounts/start.sh
mà phải được chạy trước khi mạng đã được thiết lập. Hiện tại, các ip-up
tập lệnh không thực sự bắt đầu vì chúng không thể truy cập được khi khởi động. Chạy service networking restart
sau đó sẽ hiển thị tất cả các giao diện chính xác.