Установить ПУТЬ для модуля systemd

https://access.redhat.com/solutions/454133

Ядро резервирует некоторый объем памяти (пропорциональный ее общему размеру) при запуске для таблиц памяти (для преобразования виртуальных адресов в физические) . Эта память, предоставленная таблицам памяти, не может использоваться чем-либо еще и вычитается из сообщаемого общего объема памяти.

Чем больше размер физического ОЗУ, тем меньше соотношение памяти, которое не может быть использовано, к общему размеру физического ОЗУ:

On 12Gb desktop this ratio is around 4.5%
On 32Gb server this ratio is around 2%
On 512Gb server this ratio is around 1.56%

Ответ REDHAT: Это не ошибка, это особенность.

10
13.04.2017, 15:36
2 ответа

Самый простой ответ - установить ПУТЬ как часть вашей команды ExecStart в файле модуля systemd. Например, если у вас сейчас

ExecStart=/bin/mycmd arg1 arg2

, измените его на

ExecStart=/bin/bash -c 'PATH=/new/path:$PATH exec /bin/mycmd arg1 arg2'

. Расширение $ PATH будет выполняться bash, а не systemd. Альтернативы, такие как использование Environment = PATH = / new / path: $ PATH , не будут работать, поскольку systemd не будет расширять $ PATH .

21
27.01.2020, 20:01

У меня был успех с программой env (systemd не позволяет изменять ее через файлы конфигурации):

ExecStart=/usr/bin/env PATH=/usr/bin:/path1:/path2 mycmd arg1 arg2

Обратите внимание, что env не запускает новую оболочку для выполнения программы, что может быть, а может и не быть тем, что вам нужно.

0
26.02.2021, 00:55

Теги

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