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