Systemd не устанавливает RUNTIME_DIRECTORY env, когда это необходимо? - PullRequest
0 голосов
/ 27 января 2020

У меня довольно простой тестовый сервис. В конечном счете, я буду запускать демона node, но пока отлаживаю эту проблему с помощью env ...

$ systemctl cat http-endpoints
# /etc/systemd/system/http-endpoints.service
[Unit]
Description=HTTP endpoints for triggering events
After=network.target

[Service]
Type=simple
;PassEnvironment=RUNTIME_DIRECTORY
RuntimeDirectory=endpoints
Environment=TEST=asdf
ExecStart=/usr/bin/env

[Install]
WantedBy=default.target

Я пытаюсь использовать функцию RuntimeDirectory= systemd. Я ожидаю переменную окружения RUNTIME_DIRECTORY.

Она не устанавливается.

systemd[1]: Started HTTP endpoints for triggering events.
env[26794]: LANG=en_US.UTF-8
env[26794]: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
env[26794]: INVOCATION_ID=fb24db240f454722b847ab7cefd5eb59
env[26794]: JOURNAL_STREAM=9:8063338
env[26794]: TEST=asdf

Я попробовал несколько вещей.

Если я установил ее вручную, Environment=RUNTIME_DIRECTORY=/run/endpoints, это работает. Но эта конфигурация не обязательна.

Каталог /run/endpoints создается должным образом (и быстро удаляется, потому что env выходит, но это не проблема).

$ systemd --version
systemd 237
+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN2 +IDN -PCRE2 default-hierarchy=hybrid

1 Ответ

0 голосов
/ 27 января 2020

В Ubuntu 18.04.3 нет самой последней версии systemd.

В v240 была добавлена ​​поддержка переменных среды.

CHANGES WITH 240:
    * When the RuntimeDirectory=, StateDirectory=, CacheDirectory=,
      LogsDirectory=, ConfigurationDirectory= settings are used in a
      service the executed processes will now receive a set of environment
      variables containing the full paths of these directories.
      Specifically, RUNTIME_DIRECTORY=, STATE_DIRECTORY, CACHE_DIRECTORY,
      LOGS_DIRECTORY, CONFIGURATION_DIRECTORY are now set if these options
      are used. Note that these options may be used multiple times per
      service in which case the resulting paths will be concatenated and
      separated by colons.

Надеюсь, это спасет кто-то время, которое я потратил, пытаясь понять это.

...