Гид по технологиям

Управление сервисами и демонами при старте Linux

7 min read Системное администрирование Обновлено 20 Dec 2025
Управление сервисами Linux при старте
Управление сервисами Linux при старте

контроль запуска Linux — экран загрузки и список сервисов

О чём эта статья

Здесь вы найдёте практическое объяснение этапов загрузки системы, отличия init/Upstart/systemd, инструменты (GUI и командная строка) для управления сервисами, шаблоны действий для разных ролей (десктоп‑пользователь, сисадмин, разработчик), рекомендации при миграции и контрольные проверки, чтобы убедиться, что всё работает корректно.

Важные определения (в одну строку каждое):

  • Kernel — ядро операционной системы, взаимодействует с аппаратурой.
  • Демон (daemon) — служебный процесс, который работает в фоне и ожидает события.
  • Сервис/юнит — единица управления (service/unit) в системе запуска; запускает программу или скрипт.
  • Runlevel — классическая схема init, набор режимов работы системы (0–6).
  • systemd unit — файл конфигурации systemd для управления сервисом, таймером или сокетом.

Почему управлять автозапуском важно

  • Производительность: ненужные фоновые службы расходуют ОЗУ и CPU, замедляют загрузку и работу системы.
  • Безопасность: открытые сервисы (например, веб‑сервер на порту 80) увеличивают поверхность атаки. Запускайте сервисы только при необходимости.
  • Контроль: централизованное управление упрощает диагностику, автоматизацию и обновление.

Важно: отключённый сервис всё ещё можно запустить вручную — отключение лишь предотвращает автозапуск.


Ключевые этапы загрузки (кратко)

  1. Включаете компьютер — стартует BIOS/UEFI, выбирается устройство загрузки.
  2. Загружается загрузчик (bootloader), например GRUB; он передаёт управление ядру.
  3. Загружается ядро, инициализируются драйверы и создаётся первый процесс (PID 1).
  4. PID 1 (init/systemd/upstart) запускает остальные системные службы, демон‑процессы и отображает графический дисплей.

Последний шаг и интересует нас: какие службы «пришиты» к автозапуску и как изменить набор.


Что используется сейчас: init, Upstart, systemd

init

Классическая система на основе наборов скриптов в /etc/init.d или /etc/rc.d и концепции runlevel. Простая и прозрачная, но менее гибкая при параллельном запуске и реагировании на события.

список скриптов init в директории /etc/init.d

Upstart

Промежуточный шаг, разработанный для событийной обработки (plug and play). Совместим с init‑скриптами, но постепенно ушёл в сторону systemd, когда дистрибутивы начали переходить.

systemd

Современная система инициализации и управления сервисами. Работает на основе единиц (units) и умеет запускать службы «по потребности» через сокеты/таймеры/зависимости. Поддерживает совместимость со старыми init‑скриптами в большинстве случаев.

структура директорий systemd и папок wants

Обратите внимание: папки с именами типа “this.thing.wants” показывают зависимость — когда что‑то «нуждается» в ресурсе, systemd может автоматически запустить соответствующий юнит.


Управление сервисами: обзор инструментов

Выбор инструмента зависит от системы и ваших предпочтений: CLI даёт точный контроль и автоматизацию, GUI упрощает визуальную настройку.

Командная строка — systemd (современные дистрибутивы)

Основные команды:

# посмотреть статус сервиса
systemctl status имя_сервиса.service

# запустить немедленно
sudo systemctl start имя_сервиса.service

# остановить
sudo systemctl stop имя_сервиса.service

# включить автозапуск
sudo systemctl enable имя_сервиса.service

# отключить автозапуск
sudo systemctl disable имя_сервиса.service

# включить и сразу запустить
sudo systemctl enable --now имя_сервиса.service

# полностью заблокировать автозапуск (даже ручной enable не сработает)
sudo systemctl mask имя_сервиса.service

# проверить включён ли сервис в автозапуск
systemctl is-enabled имя_сервиса.service

# посмотреть логи (journalctl)
sudo journalctl -u имя_сервиса.service --since "1 hour ago"

Совет: используйте systemctl list-units –type=service –state=running, чтобы увидеть текущие активные сервисы.

Для init/старых систем

Команды и утилиты:

# посмотреть статус через service
service имя_сервиса status

# временно остановить
sudo service имя_сервиса stop

# управление стартом — update-rc.d или chkconfig (в разных дистрибутивах)
sudo update-rc.d имя_сервиса disable
sudo chkconfig имя_сервиса off

Также есть текстовые интерфейсы (TUI) и GUI:

rcconf (TUI для init)

Утилита rcconf показывает список сервисов и позволяет пометить, какие должны запускаться при старте. Устанавливается так:

sudo apt-get install rcconf

rcconf — TUI для настройки автозапуска

Графические инструменты (разные окружения)

  • Red Hat / CentOS / Fedora: “Service Configuration Tool” — графический список сервисов с возможностью включения/выключения и управления.

графический инструмент управления сервисами в Red Hat

  • KDE: модуль в Системных настройках для управления unit‑файлами, с просмотром состояния и редактором конфигурации.

модуль для управления systemd в KDE System Settings

  • Независимые проекты: systemd-manager (GTK/Rust), systemadm (systemd-ui) — предлагают удобный интерфейс для управления service/unit.

Установка примера для Ubuntu:

sudo apt-get install kde-config-systemd

# или GTK вариант
sudo apt-get install systemd-ui

# установка скачанного пакета .deb
sudo dpkg -i systemd-manager-download.deb

Практическая методика: как безопасно очищать автозапуск (мини‑методология)

Следуйте этим этапам, чтобы не сломать систему:

  1. Инвентаризация: соберите список активных сервисов и их состояния.
    • systemctl list-unit-files –type=service
    • systemctl list-units –type=service –state=running
  2. Классификация: разделите сервисы на категории — критичные, полезные, экспериментальные, неиспользуемые.
  3. Резервная стратегия: сохраняйте текущие настройки (копируйте unit‑файлы или список enable/disable).
  4. По одному: отключайте сервисы по одному и перезагружайте систему или имитируйте сценарий (стоп/старт) для проверки поведения.
  5. Мониторинг: после изменений проверьте логи и работоспособность зависимых компонентов.
  6. Документирование: фиксируйте изменения в конфигурации и причину.

Шаблон команд для инвентаризации и снятия метрик:

# список всех unit‑файлов с состоянием (enabled/disabled)
systemctl list-unit-files --type=service

# список запущенных сервисов
systemctl --type=service --state=running

# сохранить список в файл
systemctl list-unit-files --type=service > ~/service-list-before.txt

Критерии приёмки:

  • Система загружается в нужный runlevel/target без задержек и ошибок.
  • Критичные сервисы (ssh, network, display manager и т.д.) работают нормально.
  • Нет неожиданных ошибок в journalctl за последние 30 минут после загрузки.
  • Результаты тестов приложений, зависящих от сервисов, успешны.

Роль‑ориентированные чек‑листы

Десктоп‑пользователь

  • Проверить лишние демоны: apache2, mysql, cups и т.д.
  • Если не нужен веб‑сервер — отключить: sudo systemctl disable –now apache2.service
  • Убедиться, что сеть и графический дисплей запускаются.

Сисадмин

  • Создать backup unit‑файлов: cp -a /etc/systemd/system /root/systemd-backup
  • Использовать mask для сервисов, которые не должны быть включены
  • Настроить таймеры и socket‑активацию там, где возможно

Разработчик

  • Отключать сервисы, мешающие сборке/тестированию (CI/CD runner, локальные БД).
  • Включать сервисы в виртуальной среде при необходимости.

Когда отключение сервисов вредно — контрпримеры

  • Не отключайте network‑manager или systemd‑networkd, если вы через них подключаетесь удалённо (SSH). Иначе потеряете доступ.
  • Не деактивируйте journald или dbus без уверенности: многие компоненты зависят от этих демонов.
  • В средах с высокой доступностью отключение служб может нарушить SLA.

Миграция с init/Upstart на systemd — практические советы

  1. Проверьте совместимость пакетов: большинство современных пакетов поставляют unit‑файлы, но старые могут полагаться на init‑скрипты.
  2. Используйте systemd‑symptoms: systemd умеет запускать init‑скрипты как сервисы, но лучше написать unit для корректной работы.
  3. Путь к unit‑файлам:
    • /lib/systemd/system — файлы, установленные пакетами
    • /etc/systemd/system — локальные переопределения и пользовательские unit
  4. Для миграции сервиса создайте минимальный unit‑файл и протестируйте зависимости.

Пример простого unit‑файла для сервиса myapp:

[Unit]
Description=MyApp service
After=network.target

[Service]
Type=simple
User=www-data
ExecStart=/usr/bin/myapp --foreground
Restart=on-failure

[Install]
WantedBy=multi-user.target

Разместите его как /etc/systemd/system/myapp.service, затем:

sudo systemctl daemon-reload
sudo systemctl enable --now myapp.service

Тесты и приёмка изменений

Короткий набор тестов после изменений:

  • Проверка статуса: systemctl status имя_сервиса.service
  • Проверка автозапуска: systemctl is-enabled имя_сервиса.service
  • Проверка логов: sudo journalctl -u имя_сервиса.service –since “5 minutes ago”
  • Проверка зависимостей: systemctl list-dependencies имя_сервиса.service
  • Тест восстановления: reboot, затем убедиться в ожидаемом поведении.

Пример плейбука для отключения демонов (сценарий для сисадмина)

  1. Собрать список: systemctl list-unit-files –type=service > /root/all-services.txt
  2. Проанализировать, отметить для отключения и архивировать unit‑файлы.
  3. Для каждого выбранного сервиса выполнить:
    • sudo systemctl stop имя.service
    • sudo systemctl disable имя.service
    • sudo systemctl mask имя.service (если нужно полностью запретить)
  4. Перезагрузить систему и проверить критические сервисы.
  5. Зафиксировать результаты в change log и откатный план.

Критерий отката: возможность вернуть сервис в исходное состояние командой sudo systemctl unmask && sudo systemctl enable –now имя.service.


Советы по безопасности и приватности

  • Минимизируйте количество слушающих портов: netstat -tulpen или ss -tulpen покажет сокеты.
  • Держите сервисы с сетевым доступом за межсетевым экраном, если они не нужны извне.
  • Отключайте ненужные демоны на серверах с чувствительной информацией.

Совместимость и заметки по дистрибутивам

  • Большинство современных дистрибутивов (Debian, Ubuntu с определённого релиза, Fedora, CentOS/RHEL) используют systemd по умолчанию.
  • Некоторые специализированные дистрибутивы могут сохранять init‑подходы; проверяйте документацию вашего дистрибутива перед глобальной миграцией.

Быстрые шпаргалки (cheat sheet)

  • Смотреть запущенные сервисы: systemctl –type=service –state=running
  • Отключить сервис: sudo systemctl disable имя.service
  • Включить и запустить: sudo systemctl enable –now имя.service
  • Заблокировать: sudo systemctl mask имя.service
  • Просмотреть логи: sudo journalctl -u имя.service
  • Инвентаризация: systemctl list-unit-files –type=service > services.txt

Итог и рекомендации

  • Начинайте с инвентаризации и классификации сервисов.
  • Отключайте по одному и всегда имейте план отката.
  • Для серверов отдавайте предпочтение systemd‑таймерам и socket‑активации вместо постоянного запуска задач.
  • Документируйте изменения: это поможет восстановиться и объяснить решения коллегам.

Важно: если вы не уверены в назначении конкретного демона — сначала найдите его документацию или спросите в сообществе, прежде чем отключать.

Спасибо за внимание. Поделитесь своим опытом: какие сервисы вы отключаете на рабочих станциях или серверах? Какие инструменты предпочитаете — CLI или GUI?

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Операторы поиска Bing: 8 советов для точных запросов
Поиск

Операторы поиска Bing: 8 советов для точных запросов

Калибровка компаса Android в Google Maps
Навигация

Калибровка компаса Android в Google Maps

Субтитры в Google Meet — как включить и настроить
Инструкции

Субтитры в Google Meet — как включить и настроить

Quordle: что это и как в него играть
Игры

Quordle: что это и как в него играть

Ошибки при первой сборке ПК — как избежать
Hardware

Ошибки при первой сборке ПК — как избежать

Как устроить LAN‑вечеринку — полное руководство
Гейминг

Как устроить LAN‑вечеринку — полное руководство