Выбрать оболочку один раз или для каждого шага
Рабочий процесс объявляет оболочку, и все шаги её наследуют. Без объявления Dagu предпочитает PowerShell, затем pwsh, затем cmd.exe, поэтому процесс, написанный на одной машине, ведёт себя предсказуемо на другой.
- Оболочка задаётся строкой или массивом; форма массива снимает проблемы с кавычками для аргументов вроде -NoProfile
- Шаг сохраняет вывод в именованную переменную, доступную последующим шагам и предусловиям
- Предусловия управляют шагом по этому значению, поэтому перезапуск происходит, только если служба действительно остановлена
# service-health.yaml
schedule: "*/15 * * * *"
max_active_runs: 1
shell: powershell -NoProfile
steps:
- id: check_service
run: |
(Get-Service -Name 'MyAppSvc').Status
output: SVC_STATUS
- id: restart_if_stopped
run: Restart-Service -Name 'MyAppSvc'
depends: check_service
preconditions:
- condition: "${SVC_STATUS}"
expected: "Stopped"
retry_policy:
limit: 2
interval_sec: 30
mail_on:
failure: true