Поведение служб Debian по отношению к файлам

Перевод строки -не является проблемой при заполнении массива. Для bashони просто еще один разделитель слов в этом контексте.

В вашей команде LA= ((uptime | grep -o '[0-9]\+\.[0-9]\+*'))две ошибки:

  1. Пробел после =. Это допустимый синтаксис, но он не делает того, что вы, вероятно, ожидаете.

    Вместо того, чтобы присваивать значение остатка строки в $LA, он устанавливает $LAв пустую строку, а затем выполняет оставшуюся часть строки.

    Это полезная функция для временного переопределения значения экспортированной переменной среды перед выполнением определенной команды. Как только команда завершается, исходное значение переменной восстанавливается. например.

    $ VISUAL=/usr/bin/joe sensible-editor myfile.txt
    ....
    (exit joe)
    $ echo $VISUAL
    /usr/bin/vi
    
  2. Отсутствует a $перед вторым (. Без $ваша команда не является подстановкой команд , это арифметика оболочки с фиктивными операндами и операторами.

Попробуйте вместо этого :

$ LA=($(uptime | grep -Eo '[0-9]+\.[0-9]+'))
$ typeset -p LA
declare -a LA=([0]="0.97" [1]="1.23" [2]="1.39")

0
16.12.2019, 11:22
1 ответ

Исполняемый файл ищет файл конфигурации в текущем рабочем каталоге? Если это так, то вы должны знать, что любые службы, запускаемые во время загрузки, обычно имеют свой рабочий каталог, установленный в /, если служба специально не указывает иное.

В файле .serviceвы можете использовать строку вида

WorkingDirectory=/home/user/demo

для запуска сервисного процесса уже cd'd в нужную директорию. См. man systemd.execдля более подробной информации.

Или исполняемый файл пытается использовать значение переменной среды HOMEкак часть пути к файлу конфигурации? Службы вообще не обязательно должны иметь установленную переменную окружения HOME. При необходимости вы можете установить его в файле .serviceс помощью строки вида:

Environment="HOME=/home/user"

Однако это несколько неожиданное требование для программы, которая должна работать как служба systemd. Возможно, вы захотите использовать какую-то другую переменную среды вместо HOME,и задокументируйте это явно.

В программе вы можете указать расположение файла конфигурации в виде полного пути, если вы еще этого не сделали.

1
28.01.2020, 02:38

Теги

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