RequiresMountsFor=: зависимость от точки монтирования по пути
Принимает обычные пути и автоматически добавляет зависимости от всех точек монтирования, нужных для доступа к ним. Имена mount-unit вычисляет сам systemd.
Что делает
Это удобнее ручного Requires=data.mount: не нужно знать имя unit и помнить про экранирование пути. Вложенные точки монтирования учитываются автоматически.
Параметр решает классическую проблему: служба стартует до монтирования раздела с её данными и падает с сообщением об отсутствующих файлах. При ручном перезапуске всё работает, а после перезагрузки — нет.
Где ставится. В секции [Unit]. Пути перечисляются через пробел.
Значения
| Значение | Что происходит |
|---|---|
/var/lib/myapp | зависимость от точки монтирования, содержащей этот путь. |
/mnt/backup /srv/data | несколько путей через пробел. |
Пример
Служба с данными на отдельном разделе.
[Unit]
RequiresMountsFor=/srv/data
[Service]
WorkingDirectory=/srv/data
ExecStart=/usr/local/bin/myapp
systemd сам найдёт нужный mount-unit и выстроит порядок. Перечислять его имя вручную не нужно.
Типичные ошибки
Зависимость жёсткая: если монтирование не удалось, служба не запустится. Обычно это и требуется.
Для сетевых ресурсов нужен ещё параметр монтирования _netdev, иначе порядок относительно сети будет неверным.
Параметр не создаёт точку монтирования: он лишь добавляет зависимость от существующей.
Связанные ошибки
- Mount process exited, code=exited, status=32: не найдено устройствоМонтирование не проходит: устройство или UUID не найдены, неверная файловая система, недоступен сетевой ресурс. Код 32 от команды mount.
- Dependency failed for … и результат 'dependency'Сообщение Dependency failed for: служба не запускалась, потому что упала её зависимость. Как найти настоящего виновника.
- status=200/CHDIR в systemdКод 200/CHDIR означает, что systemd не смог перейти в каталог из WorkingDirectory= до запуска программы. Причины и решение.
- No such file or directory в журнале службыСлужба не находит файл или каталог. Разбор: путь, момент запуска, изоляция unit-файла, символические ссылки, приватный /tmp.
Рядом стоящие параметры
Источники
- systemd.unit(5)
- Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)