#Когда возникает ошибка в Debian и какие условия важны
На Debian 12 (bookworm) и Debian 13 (trixie) служба может успешно запускаться из терминала, но отсутствовать после перезагрузки. Нельзя путать системный объект systemd, пользовательскую службу и сервис, который активируется через socket или timer.
#Причины и как отличить их друг от друга
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Не включена активация при загрузке | systemctl is-enabled показывает disabled, а ручной start проходит. | Проверить, предусмотрен ли [Install] и не запускается ли служба другим объектом. |
| Не готовы файловая система или сеть | В журнале ранней загрузки есть ошибки доступа к каталогу, маршруту либо зависимости. | Сопоставить порядок запуска с фактическими ресурсами. |
| Не тот вид службы | systemctl --user видит объект, а системный systemctl — нет. | Уточнить контекст пользователя и входа в сеанс. |
#Пошаговая диагностика и устранение
- 1. Запишите имя службы и реальный выпуск DebianВ графической среде откройте «Терминал» через меню приложений, на сервере подключитесь по SSH. Команда определения системы работает без администратора. Если используется контейнер без systemd, дальнейшие действия с systemctl не подходят: проверьте способ запуска контейнера.
- Чтение данных и диагностикаLinux · Терминал (Bash)КомандаЧтение данных и диагностика. Изменений нет.
cat /etc/os-releaseps -p 1 -o comm=systemctl list-unit-files --type=service --no-pager
- 2. Проверьте состояние и включение автозагрузкиВместо ИМЯ.service подставьте действительное имя из предыдущего списка, сохранив расширение service. Сравните строки Loaded, Active и UnitFileState. active после ручного старта ещё не доказывает, что служба стартует при следующей загрузке; disabled — признак отсутствия обычного включения.
- Чтение данных и диагностикаLinux · Терминал (Bash)КомандаЧтение данных и диагностика. Изменений нет.
systemctl status ИМЯ.service --no-pagersystemctl is-enabled ИМЯ.servicesystemctl show ИМЯ.service -p UnitFileState -p MainPID
- 3. Найдите событие при предыдущей загрузкеСначала запишите список доступных загрузок, затем читайте журнал конкретного объекта. Индекс -1 выбирает предыдущую сохранённую загрузку, но на системе с непостоянным журналом её может не быть. Если найдено Permission denied или dependency failed, исправляйте именно указанную причину.
- Чтение данных и диагностикаLinux · Терминал (Bash)КомандаЧтение данных и диагностика. Изменений нет.
journalctl --list-bootsjournalctl -b -1 -u ИМЯ.service --no-pager -n 100
- 4. Проверьте, чем служба запускается автоматическиКоманда cat показывает штатный файл и локальные переопределения; list-dependencies поможет найти связанный target. При состоянии static, indirect или generated не включайте службу насильно: она может активироваться сокетом, таймером либо другим зависимым объектом.
- Чтение данных и диагностикаLinux · Терминал (Bash)КомандаЧтение данных и диагностика. Изменений нет.
systemctl cat ИМЯ.servicesystemctl list-dependencies --reverse ИМЯ.service --no-pager
- 5. Включите запуск только для подходящей службыКогда systemctl is-enabled показывает disabled, служба должна постоянно работать и unit содержит корректную секцию [Install], используйте enable. Команда меняет конфигурацию автозапуска, не запускает процесс немедленно. Если это экземпляр шаблона, включают конкретный экземпляр, а не имя с символом @ без параметра.Linux · Терминал (Bash)С осторожностьюНужен sudoДля отмены только собственного изменения: sudo systemctl disable ИМЯ.service.
sudo systemctl enable ИМЯ.servicesystemctl is-enabled ИМЯ.serviceКоманда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.
- 6. Проверьте параметры зависимостей без случайной правкиЕсли сбой только ранним утром при загрузке, найдите в unit WorkingDirectory, ExecStart, After и Requires. Сравните их с путями на диске и журналом. Для изменения только собственного unit используйте systemctl edit; системные файлы пакета в /lib/systemd/system либо /usr/lib/systemd/system не перезаписывайте.Linux · Терминал (Bash)КомандаЧтение данных и диагностика. Изменений нет.
systemctl show ИМЯ.service -p WorkingDirectory -p After -p Requiressystemd-analyze critical-chain ИМЯ.service
- Чтение данных и диагностикаLinux · Терминал (Bash)КомандаЧтение данных и диагностика. Изменений нет.
systemctl is-enabled ИМЯ.servicesystemctl status ИМЯ.service --no-pagerjournalctl -b -u ИМЯ.service --no-pager -n 40 - 7. Выполните проверку после согласованной перезагрузкиСначала убедитесь, что доступ к серверу восстановим через консоль управления или физический монитор. После запланированной перезагрузки проверьте active и фактическую работу программы, а не только код команды. Если вновь failed — сохраните новую запись журнала для сопоставления.
#Проверка результата и действия при неуспехе
Успех — после новой загрузки Debian запускает именно нужную службу, а приложение действительно обрабатывает запросы. Если сервис предназначен для запуска по требованию, проверяйте его соответствующий socket/timer.