SystemdDoctor
WorkingDirectory= [Service]

WorkingDirectory= в systemd: рабочий каталог службы

Задаёт каталог, который станет текущим для процессов службы. Путь абсолютный; переход выполняется после смены пользователя, поэтому доступ нужен именно ему.

Что делает

Параметр важен для программ, которые ищут файлы относительно текущего каталога: шаблоны, статику, файлы настроек. Без него текущим каталогом будет корень файловой системы, и такие программы не найдут своих файлов.

Если переход не удался, служба завершается с кодом 200/CHDIR ещё до запуска программы. Дефис перед путём делает каталог необязательным: при его отсутствии процесс запустится в корне.

Где ставится. В секции [Service]. Допустима тильда — домашний каталог пользователя службы.

Значения

ЗначениеЧто происходит
/opt/myappобычный вид: абсолютный путь.
-/opt/myappкаталог необязателен: его отсутствие не считается ошибкой.
~домашний каталог пользователя из User=.

Пример

Программа, которая ищет файлы рядом с собой.

[Service]
User=app
WorkingDirectory=/opt/myapp
ExecStart=/opt/myapp/bin/server --config config/app.yml

Относительный путь в аргументе допустим: его разбирает сама программа относительно рабочего каталога. Путь же в ExecStart= обязан быть абсолютным.

Типичные ошибки

Относительный путь недопустим: unit не загрузится.

Каталог должен быть доступен пользователю службы, а не только root: нужен бит x на каталоге и на всём пути.

Каталог на отдельном разделе может быть ещё не смонтирован при запуске: нужен RequiresMountsFor=.

systemd не создаёт этот каталог сам, в отличие от StateDirectory=.

Связанные ошибки

  • status=200/CHDIR в systemdКод 200/CHDIR означает, что systemd не смог перейти в каталог из WorkingDirectory= до запуска программы. Причины и решение.
  • Permission denied в журнале службыОтказ в доступе у службы systemd: права на файл, каталоги по пути, пользователь службы, параметры изоляции, SELinux и AppArmor.
  • No such file or directory в журнале службыСлужба не находит файл или каталог. Разбор: путь, момент запуска, изоляция unit-файла, символические ссылки, приватный /tmp.

Рядом стоящие параметры

Источники

  • systemd.exec(5) официальная документация
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04) собственная проверка
    сверено 15 сентября 2026