Назад | Перейти на главную страницу

Systemd После не запуска службы

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.