Theo tài liệu systemd, tôi phải sử dụng Môi trường=
, nhưng tôi
không chắc chắn làm thế nào để làm điều đó. Giả sử tôi có tệp đơn vị systemd
gọi điện kiểm tra-systemd-params.service
:
Đây là một ví dụ sử dụng Môi trường=
Mô tả=Kiểm tra thông số hệ thống
Muốn=mạng-online.mục tiêu
Sau=mạng-online.đích
[Dịch vụ]
Môi trường="MOD=foo" "REM=bar"
ExecStart=/usr/bin/php -f /path/to/test_systemd.php --mod ${MOD} --rem ${REM}
StandardOutput=file:/var/log/test-multiple-systemd.log
[Cài đặt]
#Bắt đầu sau khi khởi động
WantedBy=multi-user.target
Đây không phải là những gì bạn đang tìm kiếm vì các biến là giá trị tĩnh.
tôi đã tìm thấy cái này ví dụ, và nó có hai Môi trường
dòng, nhưng một trong số chúng là giá trị tĩnh! tôi cần hai các giá trị động, như:
Đoạn ví dụ bạn đưa ra đề cập đến mẫu dịch vụ. Bạn có thể vượt qua chỉ có một biến cách này. Các dịch vụ systemd có thể lấy một đối số thông qua cú pháp "service@argument.service".
Đây là một ví dụ thực hiện
Mô tả=Kiểm tra thông số hệ thống
Muốn=mạng-online.mục tiêu
Sau=mạng-online.đích
[Dịch vụ]
Môi trường=MOD=%i
Môi trường=REM=thanh
ExecStart=/usr/bin/php -f /path/to/test_systemd.php --mod ${MOD} --rem ${REM}
StandardOutput=file:/var/log/test-multiple-systemd.log
[Cài đặt]
#Bắt đầu sau khi khởi động
WantedBy=multi-user.target
Sau đó, bạn bắt đầu các dịch vụ như thế này:
systemctl start test-systemd-params@foo.service
systemctl start test-systemd-params@bar.service
Vì vậy, nó vẫn không chính xác như những gì bạn đang tìm kiếm, bởi vì bạn vẫn có một biến tĩnh.
Cách duy nhất tôi thấy (chưa kiểm tra) để vượt qua nhiều biến sẽ được sử dụng Tệp môi trường =
các tệp cấu hình chỉ thị và được phân tách bằng năng động tên bằng cách sử dụng @tranh luận
tổng hợp.
[Dịch vụ]
Môi trườngFile=/path/to/config/%i
ExecStart=/usr/bin/php -f /path/to/test_systemd.php --mod ${MOD} --rem ${REM}
StandardOutput=file:/var/log/test-multiple-systemd.log
Tệp cấu hình ví dụ trong /đường dẫn/đến/cấu hình/
, hãy cùng nói nào conf1
:
MOD=foo
REM=thanh
Sau đó, bạn bắt đầu các dịch vụ như thế này:
systemctl start test-systemd-params@conf1.service
systemctl start test-systemd-params@conf2.service
...