Tôi cần tạo nhiều phiên bản của dịch vụ systemd. Có thể chuyển tham số khi bắt đầu dịch vụ, đó sẽ là tham số cho tập lệnh php không?
Ví dụ: giả sử tôi có một kịch bản, test_systemd.php
, với hai tham số, chế độ
và còn lại
tương ứng.
Php:
<?php
$val = getopt(null, ['mod:','rem:']);
echo $val['mod']."\n";
echo $val['rem']."\n";
echo "\n";
?>
Nếu tôi chạy nó qua php, tôi chỉ cần làm php test_systemd.php --mod foo --rem bar
Điều gì sẽ vang vọng ra ngoài
foo
quán ba
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 làm thế nào để làm điều đó. Giả sử tôi có một tệp đơn vị systemd có tên kiểm tra-systemd-params.service
:
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ụ]
ExecStart=/usr/bin/php -f /path/to/test_systemd.php
StandardOutput=file:/var/log/test-multiple-systemd.log
Môi trường =???? <--- GÌ ĐI ĐÂY?
[Cài đặt]
#Bắt đầu sau khi khởi động
WantedBy=multi-user.target
Tôi không hiểu những gì tôi cần tp đặt ở đây. Điều đó thậm chí có thể xảy ra đối với hai thông số (chế độ
và còn lại
) có được thông qua khi bắt đầu một phiên bản của dịch vụ không?
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ư:
Môi trường=mod=%i
Môi trường=rem=%i
Đoạn ví dụ trông giống như:
[Dịch vụ]
Gõ=thông báo
Môi trường=LANG=C <--- TĨNH, nhưng cần động khác
Môi trường=HTTPD_INSTANCE=%i <--- năng động, tuyệt vời, nhưng cần một cái khác
ExecStartPre=/bin/mkdir -m 710 -p /run/httpd/instance-%i
ExecStartPre=/bin/chown root.apache /run/httpd/instance-%i
ExecStartPre=/bin/mkdir -m 700 -p /var/lib/httpd/instance-%i
ExecStartPre=/bin/chown apache.apache /var/lib/httpd/instance-%i
ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND -f conf/%i.conf
ExecReload=/usr/sbin/httpd $OPTIONS -k duyên dáng -f conf/%i.conf