Использование директивыPartOf
вместе с целевым модулем для запуска всех служб как группы, похоже, позволяет достичь моих целей.
Мои служебные файлы теперь выглядят так:
[Unit]
Description=foo
After=syslog.target network.target
PartOf=foo.service bar.service baz.service all-services.target
[Service]
User=foo
WorkingDirectory=~
Restart=always
RestartSec=90
StartLimitInterval=400
StartLimitBurst=3
SyslogIdentifier=foo
ExecStart=/path/to/binary
[Install]
WantedBy=all-services.target
и цель группировки выглядит как:
[Unit]
Description=all-services
PartOf=foo.service bar.service baz.service
Я могу запускать и перезапускать службы foo
, bar
и baz
, запустив systemctl start all-services.target
, и уничтожение процесса, используемого foo
, приведет к их остановке и перезапуску.
Одна неясная вещь: если я запущу systemctl stop all-services.target
, он остановит все службы, но systemctl start all-services.target
из остановленного состояния запустит только целевой модуль, а не все службы.
Я пытался заменить WantedBy
на RequiredBy
в служебных подразделениях, но это, кажется, ничего не меняет.
rsync
может не поддерживать эту функциональность изначально, но вы можете использовать файловые системы ACL , чтобы гарантировать, что любой вновь созданный каталог под /some/existing/path/
имеет определенный набор разрешений. Например:
$ setfacl -dm u::rwx,g::rx,o::r /some/existing/path/
Вновь созданные каталоги под /some/existing/path/
теперь должны иметь разрешения 750
вручную или через rsync
.