Debian Debian 12Debian 13

Debian Linux: после переезда каталога не выполняется автоматический запуск

  • Обновлено
  • Чтение ≈ 3 минуты
  • Нужны права администратора

Краткий ответ

Служба Debian перестала запускаться автоматически после переноса её рабочего каталога, например из /var/lib/app в /srv/app. Перенос меняет путь, владельца, зависимость от монтирования и возможные ограничения systemd; ручной запуск под администратором ничего не доказывает.

В этой статье
  1. Когда возникает ошибка в Debian и какие условия важны
  2. Причины и как отличить их друг от друга
  3. Пошаговая диагностика и устранение
  4. Проверка результата и действия при неуспехе

#Когда возникает ошибка в Debian и какие условия важны

Служба Debian перестала запускаться автоматически после переноса её рабочего каталога, например из /var/lib/app в /srv/app. Перенос меняет путь, владельца, зависимость от монтирования и возможные ограничения systemd; ручной запуск под администратором ничего не доказывает.

#Причины и как отличить их друг от друга

Возможная причинаКак узнатьЧто делать
Старый путь остался в ExecStart или WorkingDirectorysystemctl cat ссылается на несуществующий каталог.Сопоставить unit и фактический новый путь.
Права каталога не подходят пользователю службыnamei показывает закрытый родительский каталог после переезда.Выдать минимальный доступ вместо chmod 777.
Новый диск монтируется позже запускаfindmnt после загрузки видит ресурс, но журнал сервиса сообщает ENOENT.Проверить mount-зависимости и порядок старта.

#Пошаговая диагностика и устранение

  1. 1. Узнайте, какая служба должна использовать каталогОткройте терминал Debian, получите имя службы из сообщения приложения и покажите её статус. По ошибкам No such file or directory и Working directory проверьте точный ожидаемый путь, а не делайте обратный перенос без фиксации текущего состояния.
  2. Чтение данных и диагностика
    Linux · Терминал (Bash)Команда
    Чтение данных и диагностика. Изменений нет.
    systemctl status ИМЯ.service --no-pager
    journalctl -b -u ИМЯ.service --no-pager -n 100
  1. 2. Сверьте старый и новый пути во всех полях unitС помощью systemctl cat найдите ExecStart, WorkingDirectory, EnvironmentFile, ReadWritePaths, StateDirectory, BindPaths. Если unit установлен из пакета Debian, его основной файл в /lib или /usr/lib не изменяйте напрямую; локальные правки должны жить в /etc/systemd/system через drop-in.
    Linux · Терминал (Bash)Команда
    Чтение данных и диагностика. Изменений нет.
    systemctl cat ИМЯ.service
    systemctl show ИМЯ.service -p WorkingDirectory -p ExecStart -p User
  1. 3. Проверьте новую точку монтированияЕсли перенос был на отдельный диск, посмотрите findmnt -T на новом пути и /etc/fstab. Каталог может существовать в корне до монтирования и скрывать случайно созданные там файлы. Не запускайте сервис, который может писать в пустой резервный каталог.
    Linux · Терминал (Bash)Команда
    Чтение данных и диагностика. Изменений нет.
    findmnt -T /srv/app
    findmnt --fstab --evaluate
    ls -ld /srv/app
  1. 4. Сверьте права владельца и родительских каталоговИспользуйте namei -l и stat на пути данных. Если сервис работает от отдельного пользователя, он должен проходить все родительские каталоги и читать/писать только нужные объекты. Не исполняйте chown -R на /srv и не давайте миру права записи.
    Linux · Терминал (Bash)Команда
    Чтение данных и диагностика. Изменений нет.
    namei -l /srv/app
    stat -c "%U %G %a %n" /srv/app
  1. 5. Сохраните и исправьте только ваш параметр запускаДо изменения unit запишите вывод systemctl cat. Затем в sudo systemctl edit меняйте только подтверждённый путь, обычно WorkingDirectory или EnvironmentFile; для собственной службы допустимо отдельно прописать зависимость от диска через RequiresMountsFor после проверки фактической файловой системы.
    Linux · Терминал (Bash)С осторожностьюНужен sudo
    Если редактор открыл пустую конфигурацию, не вставляйте неизвестные параметры.
    sudo systemctl edit ИМЯ.service
    systemctl cat ИМЯ.service

    Команда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.

  1. 6. Проверяйте unit и монтирование до включения задачиКоманда systemd-analyze verify укажет ошибки синтаксиса и отсутствующие зависимости. Проверяйте mount после согласованной загрузки; если диск поздно появляется, сначала решите вопрос монтирования, а не добавляйте произвольные задержки sleep к ExecStart.
    Linux · Терминал (Bash)Команда
    Чтение данных и диагностика. Изменений нет.
    systemd-analyze verify ИМЯ.service
    findmnt -T /srv/app
  1. 7. Перезапустите и проверьте реальную запись или чтениеПосле копии данных и согласованного окна выполните restart только этой службы. Убедитесь, что процесс обращается к новому каталогу и в его журнале нет отказов. После будущей перезагрузки повторите проверку, иначе проблема может сохраниться только при раннем старте.
  2. Перезапуск может прервать подключённых пользователей
    Linux · Терминал (Bash)С осторожностьюНужен sudo
    Перезапуск может прервать подключённых пользователей.
    sudo systemctl restart ИМЯ.service
    systemctl status ИМЯ.service --no-pager
    journalctl -u ИМЯ.service -b --no-pager -n 50

    Команда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.

#Проверка результата и действия при неуспехе

Успех — сервис Debian использует нужный каталог при обычном автоматическом старте и после перезагрузки, не создавая потерянные файлы в скрытой точке монтирования.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.