letsencrypt.service
:
[Unit]
Description=Renews letsencrypt certificates
After=network.target letsencrypt_concat_fullchain_privkey.service
[Service]
Type=oneshot
WorkingDirectory=/etc/letsencrypt/
ExecStart=/usr/bin/letsencrypt renew
Когда я запускаю эту службу вручную: sudo systemctl start letsencrypt
это не похоже на начало letsencrypt_concat_fullchain_privkey.service
служба. Я побежал sudo systemctl start letsencrypt_concat_fullchain_privkey.service
и работает как надо.
Я пытаюсь сделать то, что когда letsencrypt.service
закончено, я бы хотел начать letsencrypt_concat_fullchain_privkey.service
служба.
After=
не подразумевает отношения зависимости (только порядок), вы можете установить зависимость с помощью Requires=
или Wants=
директива.
Требуется =
Настраивает зависимости требований от других модулей. Если этот отряд активируется, перечисленные здесь юниты также будут активированы. Если один из других блоков будет деактивирован или его активация не удастся, это устройство будет деактивировано. Эта опция может быть указана более одного раза или несколько единиц, разделенных пробелами, могут быть указаны в одной опции, и в этом случае будут созданы зависимости требований для всех перечисленных имен. Обратите внимание, что зависимости требований не влияют на порядок, в котором службы запускаются или останавливаются. Это должно быть настроено независимо сAfter=
илиBefore=
параметры. Если единицаfoo.service
требуется единичный bar.service, настроенный с помощью Requires =, а с помощьюAfter=
илиBefore=
, то оба блока будут запущены одновременно и без задержки между ними, еслиfoo.service
активирован. Часто лучше использоватьWants=
вместо тогоRequires=
для создания системы, более устойчивой при работе с отказавшими службами.Обратите внимание, что этот тип зависимости не означает, что другой модуль всегда должен находиться в активном состоянии, когда этот модуль работает. В частности: неуспешные проверки условий (например,
ConditionPathExists=
,ConditionPathExists=
,… - см. Ниже) не вызывают запуск агрегата сRequires=
зависимость от него, чтобы потерпеть неудачу. Кроме того, некоторые типы устройств могут деактивироваться сами по себе (например, процесс обслуживания может решить завершить работу без ошибок, или устройство может быть отключено пользователем), что не распространяется на устройства, имеющиеRequires=
зависимость. ИспользоватьBindsTo=
тип зависимости вместе сAfter=
чтобы гарантировать, что блок никогда не может находиться в активном состоянии без определенного другого блока, также в активном состоянии (см. ниже).Обратите внимание, что зависимости этого типа также можно настроить вне файла конфигурации модуля, добавив символическую ссылку на
.requires/
каталог, сопровождающий файл модуля. Подробнее см. Выше.Хочет =
Более слабая версияRequires=
. Блоки, перечисленные в этой опции, будут запущены, если блок настройки. Однако, если перечисленные единицы не запускаются или не могут быть добавлены к транзакции, это не влияет на действительность транзакции в целом. Это рекомендуемый способ связать запуск одного блока с запуском другого блока.Обратите внимание, что зависимости этого типа также могут быть настроены вне файла конфигурации модуля путем добавления символических ссылок на
.wants/
каталог, сопровождающий файл модуля. Подробнее см. Выше.
Ссылка: http://freedesktop.org/software/systemd/man/systemd.unit.html
Я пытаюсь сделать так, чтобы после завершения работы letsencrypt.service я хотел, чтобы он запустил службу letsencrypt_concat_fullchain_privkey.service.
Вы хотите добавить это в свой letsencrypt.service
файл тогда:
ExecStartPost=/bin/systemctl start letsencrypt_concat_fullchain_privkey.service
Затем эта команда будет запускаться последовательно после команды, которую вы ввели ExecStart=
.
Вы можете узнать больше о ExecStartPost=
в man systemd.service
или посмотрите любой systemd
директива в man systemd.directives
.