Am nevoie să creez mai multe instanțe ale unui serviciu systemd. Este posibil să treci parametrii la pornirea serviciului, care ar fi parametrii pentru un script php?
De exemplu, să presupunem că am un scenariu, test_systemd.php
, cu doi parametri, mod
și rem
respectiv.
php:
<?php
$val = getopt(null, ['mod:','rem:']);
echo $val['mod']."\n";
echo $val['rem']."\n";
echo "\n";
?>
Dacă rulez asta prin php, o fac php test_systemd.php --mod foo --rem bar
Care ar avea un ecou
foo
bar
Conform documentelor systemd, ar trebui să folosesc Mediu=
, dar nu sunt sigur cum să fac asta. Să presupunem că am un fișier unitar systemd numit test-systemd-params.service
:
Descriere=Testul parametrilor sistemului
Wants=network-online.target
După=network-online.target
[Serviciu]
ExecStart=/usr/bin/php -f /path/to/test_systemd.php
StandardOutput=file:/var/log/test-multiple-systemd.log
Mediu=???? <--- CE MERGE AICI?
[Instalare]
#Începe după pornire
WantedBy=multi-user.target
Nu înțeleg de ce am nevoie de locul aici. Este posibil chiar și pentru cei doi parametri (mod
și rem
) să fie trecut la pornirea unei instanțe a serviciului?
am găsit acest exemplu, și are două Mediu inconjurator
linii, dar una dintre ele este o valoare statică! am nevoie Două valori dinamice, cum ar fi:
Mediu=mod=%i
Mediu=rem=%i
Exemplul de fragment arată astfel:
[Serviciu]
Tip = notificare
Environment=LANG=C <--- STATIC, dar au nevoie de o altă dinamică
Mediu=HTTPD_INSTANCE=%i <--- dinamic, grozav, dar nevoie de altul
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 grațios -f conf/%i.conf