copy_only_missing? - Копировать из / A в / C только пути, отсутствующие в / B и / C - краткий способ

Вы должны использовать директиву User= в службе systemd.

User=, Group=

Задайте пользователя или группу UNIX, от имени которых выполняются процессы, соответственно. Принимает в качестве аргумента одно имя пользователя или группы или числовой идентификатор. Для системных служб (службы, запускаемые менеджером системных служб, т. е. управляемые PID 1) и для пользовательских служб пользователя root (службы, управляемые корневым экземпляром systemd --user) по умолчанию используется «root», но User= может использоваться для указания другого пользователя. Для пользовательских служб любого другого пользователя переключение удостоверения пользователя не разрешено, поэтому единственным допустимым параметром является тот же пользователь, от имени которого работает диспетчер служб пользователя. Если группа не задана, используется группа пользователя по умолчанию. Этот параметр не влияет на команды, командная строка которых имеет префикс «+».

https://www.freedesktop.org/software/systemd/man/systemd.exec.html#User=

Я бы также рекомендовал переместить ваш скрипт из домашнего каталога в стандартный путь, например /usr/local/bin или что-то в этом роде.

Вы также должны убедиться в том, что ваш connectdocker.service упорядочен, указав для него After=docker.service и Requires=docker.service. Как написано, connectdocker.service, вероятно, пытается запуститься примерно в то же время, что и docker.service, и вам нужно будет дождаться docker.service, чтобы активироваться до того, как вы сможете к нему подключиться.

Requires=

Настраивает зависимость требований от других модулей.Если этот юнит будет активирован, перечисленные здесь юниты также будут активированы. Если один из других юнитов деактивируется или его активация не удалась, этот юнит будет деактивирован. Эта опция может быть указана более одного раза или несколько единиц, разделенных пробелами, могут быть указаны в одной опции, и в этом случае будут созданы зависимости требований для всех перечисленных имен. Обратите внимание, что зависимости требований не влияют на порядок запуска или остановки служб. Это должно быть настроено независимо с опциями After= или Before=. Если юниту foo.service требуется юнит bar.service, настроенный с помощью Requires=, и порядок не настроен с After= или Before=, то оба юнита будут запущены одновременно и без какой-либо задержки между ними, если активирован foo.service. Часто лучше использовать Wants= вместо Requires=, чтобы получить более надежную систему при работе с отказавшими службами.

Обратите внимание, что этот тип зависимости не означает, что другой модуль всегда должен находиться в активном состоянии, когда работает этот модуль. В частности: неудачные проверки условий (такие как ConditionPathExists=, ConditionPathExists=, … — см. ниже) не приводят к сбою запуска задания модуля с зависимостью Requires= от него. Кроме того, некоторые типы модулей могут деактивироваться сами по себе (например, сервисный процесс может принять решение завершиться корректно или пользователь может отключить устройство), что не распространяется на модули, имеющие зависимость Requires=.Используйте тип зависимости BindsTo= вместе с After=, чтобы гарантировать, что модуль никогда не будет в активном состоянии, если другой конкретный модуль также не находится в активном состоянии (см. ниже).

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

https://www.freedesktop.org/software/systemd/man/systemd.unit.html#Requires=

https://www.freedesktop.org/software/systemd/man/systemd.unit. html#Before=

1
21.06.2016, 01:01
0 ответов

Теги

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