Мне нужно создать несколько экземпляров службы systemd. Можно ли передать параметры при запуске службы, которые будут параметрами для php-скрипта?
Например, допустим, у меня есть сценарий, test_systemd.php
, с двумя параметрами, мод
и бэр
соответственно.
PHP:
<?php
$val = getopt(null, ['mod:','rem:']);
echo $val['mod']."\n";
echo $val['rem']."\n";
echo "\n";
?>
Если я запускаю это через php, я просто делаю php test_systemd.php --mod foo --rem бар
Что будет эхом
фу
бар
Согласно документам systemd, я должен использовать Окружающая среда =
, но я не уверен, как это сделать. Допустим, у меня есть файл модуля systemd с именем тест-systemd-params.service
:
Description=Systemd Params Test
Хочет=network-online.target
After=network-online.target
[Оказание услуг]
ExecStart=/usr/bin/php -f /path/to/test_systemd.php
StandardOutput=файл:/var/log/test-multiple-systemd.log
Окружающая среда=???? <--- ЧТО ЗДЕСЬ?
[Установить]
#Запустить после загрузки
WantedBy=многопользовательская.цель
Я не понимаю, что мне здесь нужно. Возможно ли это даже для двух параметров (мод
и бэр
) для передачи при запуске экземпляра службы?
я нашел это пример, и он имеет два Среда
строк, но одна из них является статическим значением! я нуждаюсь два динамические значения, такие как:
Окружающая среда=mod=%i
Окружающая среда=rem=%i
Фрагмент примера выглядит так:
[Оказание услуг]
Тип=уведомить
Environment=LANG=C <--- STATIC, но нужен другой динамический
Environment=HTTPD_INSTANCE=%i <--- динамический, отличный, но нужен другой
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 $ОПЦИИ -k изящно -f conf/%i.conf