Ubuntu Ubuntu Linux

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

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

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

После переноса каталога приложения Ubuntu может перестать выполнять его автозапуск: systemd хранит абсолютный путь ExecStart/WorkingDirectory, а разрешения, символьные ссылки и точки монтирования могли измениться. Начинать следует с выяснения механизма запуска.

В этой статье
  1. Что означает проблема и кому подходит инструкция
  2. Возможные причины и отличительные признаки
  3. Диагностика и пошаговое устранение
  4. Как убедиться, что неисправность устранена
  5. Если результат не получен

#Что означает проблема и кому подходит инструкция

После переноса каталога приложения Ubuntu может перестать выполнять его автозапуск: systemd хранит абсолютный путь ExecStart/WorkingDirectory, а разрешения, символьные ссылки и точки монтирования могли измениться. Начинать следует с выяснения механизма запуска.

#Возможные причины и отличительные признаки

Возможная причинаКак узнатьЧто делать
В unit остался старый абсолютный путьsystemd ищет программу в прежней папке.status содержит EXEC, CHDIR или No such file or directory.Обновить путь в собственном unit или override.
Изменился владелец или праваПриложение не может войти в перенесённый каталог.В журнале Permission denied, namei показывает ограничение.Исправить только недоступную часть пути.
Новая папка находится на поздно монтируемом дискеСервис запускается до подключения носителя.После ручного запуска позже всё работает.Проверить зависимость от точки монтирования.

#Диагностика и пошаговое устранение

  1. 1. Определите, что запускает программуВ Терминале Ubuntu проверьте наличие нужного service или user-службы, а не предполагайте, что это cron. Посмотрите systemctl list-unit-files и crontab -l. Запишите исходное и новое расположения; не удаляйте старый каталог до проверки миграции.
    Linux · Терминал (Bash)Команда
    ИМЯ — часть настоящего имени приложения; grep может не найти совпадений.
    systemctl list-unit-files --type=service | grep -i ИМЯ
    crontab -l
  1. 2. Посмотрите полный unit и ошибки стартаДля системной службы выполните systemctl cat и журнал; для пользовательской используйте --user. Найдите ExecStart, WorkingDirectory и EnvironmentFile. Ошибки status=200/CHDIR и 203/EXEC помогают отличить недоступный рабочий каталог от неверной программы.
    Linux · Терминал (Bash)Команда
    Только чтение. Параметры сервисов разных пакетов отличаются.
    systemctl cat ИМЯ.service
    systemctl status ИМЯ.service --no-pager
    journalctl -u ИМЯ.service -b --no-pager -n 70
  1. 3. Проверьте новое расположение и связанные ссылкиЗамените пример пути реальным. Команда readlink -f покажет конечный путь ссылки, namei -l — компоненты каталога, findmnt -T — устройство. Если файлы на отдельном носителе, проверьте наличие монтирования после загрузки.
    Linux · Терминал (Bash)Команда
    Путь — заполнитель, исходные файлы не изменяются.
    readlink -f /новый/путь/к/программе
    namei -l /новый/путь/к/программе
    findmnt -T /новый/путь
  1. 4. Сохраните настройки перед корректировкойДля собственной службы скопируйте вывод systemctl cat в отдельный защищённый файл и используйте sudo systemctl edit ИМЯ.service, чтобы адресно заменить нужный параметр; для замены ExecStart в drop-in сначала обычно требуется пустой ExecStart=, затем новый ExecStart=/полный/путь. Но это зависит от типа unit и числа ExecStart. Не правьте файл пакета напрямую и не выдумывайте бинарное имя.
    Linux · Терминал (Bash)Команда
    Изменение drop-in после резервной копии и анализа оригинала.
    systemctl cat ИМЯ.service
  1. 5. Проверьте конфигурацию systemd и запускПосле правок выполните sudo systemctl daemon-reload, затем systemd-analyze verify ИМЯ.service (возможны предупреждения не относящиеся к вашему изменению) и только потом согласованный sudo systemctl restart. Если сервис должен читать данные с нового диска, проверьте порядок монтирования, а не бесконечные задержки sleep.
    Linux · Терминал (Bash)С осторожностьюНужен sudo
    Перечитывание конфигураций systemd, без автоматического старта.
    sudo systemctl daemon-reload
    systemd-analyze verify ИМЯ.service

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

  1. 6. Сверьте работу после новой загрузкиКонтроль включает status, журнал и реальную функцию программы. Перезагрузку проводите только после резервной копии данных и наличия консоли. Если служба не стартует, откатите свою новую правку, а не возвращайте все пути символической ссылкой без оценки рисков.
  2. Не удаляйте прежний каталог, пока не проверено всё приложение
    Linux · Терминал (Bash)Команда
    Не удаляйте прежний каталог, пока не проверено всё приложение.
    systemctl status ИМЯ.service --no-pager
    journalctl -u ИМЯ.service -b --no-pager -n 40

#Как убедиться, что неисправность устранена

Исправление подтверждено лишь если приложение после перезагрузки автоматически обращается к новому каталогу, а не просто сообщает active.

#Если результат не получен

Не повторяйте опасные действия наугад. Сохраните точную формулировку ошибки, вывод диагностики без секретов, версию Ubuntu и данные о затронутом компоненте. Верните лишь собственные изменения из резервной копии; если затронута загрузка, диски или рабочий сервер, воспользуйтесь консолью восстановления либо помощью администратора.

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

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

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