Systemd Custom Service не читает путь

В качестве дополнения, если вы используете оболочку, совместимую с bash, вы можете использовать переменную GLOBIGNORE, чтобы исключить результаты из сопоставления с образцом. От человека:

   GLOBIGNORE
          A colon-separated list of patterns defining the set of filenames
          to be ignored by pathname expansion.  If a filename matched by a
          pathname  expansion  pattern also matches one of the patterns in
          GLOBIGNORE, it is removed from the list of matches.

В вашем конкретном случае:

sh$ (GLOBIGNORE='*.pdf:*.txt'; ls -d *)

Обратите внимание, что я запускаю эту команду как вспомогательную оболочку (используя круглые скобки), чтобы не изменять переменную среды GLOBIGNORE моей интерактивной оболочки.

0
25.09.2018, 18:16
1 ответ

Службы не запускаются в контексте сеанса входа в систему.

Ваш PATHявляется не правильным, и значение PATHв оболочке в сеансе входа в систему совершенно не имеет значения, как и сценарии запуска вашей оболочки.

Одной из особенностей систем управления службами (в целом, не ограничиваясь systemd ), является то, что они запускают все службы на основе единой единой среды, измененной только элементами определение службы (что бы это ни было ). Это не имеет ничего общего с тем, как оболочки входа в систему настраивают пользовательские среды для сеансов входа. (Нет, это также не rootсреда сеанса входа в систему.)

В случае с systemd вашим определением службы является файл сервисной единицы, и если вы не измените PATHв этой единице, будет любое значение по умолчанию , с которым все службы запускаются с . В случае с systemd это задокументировано; и /usr/local/lib/nodejs/node-v8.11.4/bin/— это , а не в списке.

Если вы хотите, чтобы PATHбыло чем-то другим, кроме значения по умолчанию для всех сервисов -, вам необходимо изменить настройки вашего сервисного подразделения с помощью настроек Environment=, чтобы изменить его.

Дополнительная литература

2
28.01.2020, 02:31

Теги

Похожие вопросы