Битлента
Словарь терминов3 мин чтения·

systemd: как управлять службами и загрузкой Linux

systemd запускает и контролирует службы в большинстве дистрибутивов Linux. Юниты, команда systemctl, журнал journalctl и типичные сценарии диагностики.

Система инициализации

systemd — набор компонентов, который первым запускается при старте Linux (процесс с номером 1) и затем управляет службами, монтированием, таймерами и сокетами. Он используется в большинстве популярных дистрибутивов, включая Debian, Ubuntu, Fedora и другие, хотя существуют и системы без него.

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

Системные и пользовательские службы разделяются: первые запускаются при загрузке, вторые — от имени конкретного пользователя и управляются командой с ключом --user. Это удобно для фоновых программ, которым не нужны права администратора.

Юниты и их виды

Основная единица — юнит, описанный текстовым файлом. Чаще всего это service — фоновая служба, а также socket, timer (запуск по расписанию), mount, target — группа юнитов вроде состояния «сеть подключена». В файле служебного юнита указано, что запускать, от какого пользователя и когда перезапускать.

Файлы, поставляемые пакетами, лежат в системных каталогах, а собственные и правки хранят в отдельном каталоге /etc/systemd/system, чтобы обновления не перезаписывали ваши настройки.

Таймеры заменяют часть заданий cron: юнит timer запускает связанную службу по расписанию или через интервал после загрузки. Преимущество в том, что результаты работы попадают в тот же журнал, а состояние видно через systemctl list-timers.

Команды systemctl

systemctl status имя показывает состояние службы, последние строки журнала и идентификатор процесса. Start и stop запускают и останавливают её сейчас, restart перезапускает, reload просит перечитать настройки без остановки. Enable включает автозапуск при загрузке, disable отключает, а enable --now делает и то и другое сразу.

Список всех служб выводит systemctl list-units --type=service. Если вы изменили файл юнита, выполните systemctl daemon-reload, иначе systemd продолжит использовать прежнее описание.

Если служба не стартует, systemctl status покажет код завершения и последние строки журнала. Сообщения вроде «Failed to start» без подробностей стоит дополнять просмотром journalctl -xe: он выводит расширенные пояснения к недавним ошибкам.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно

Журнал journalctl

systemd собирает журналы служб в единое хранилище, которое читают командой journalctl. Ключ -u имя показывает записи конкретной службы, -f следит за новыми в реальном времени, -b ограничивает текущей загрузкой, а --since и --until задают период. Для ошибок пригодится фильтр по приоритету -p err.

Для сетевых проблем журнал часто и содержит причину: отказ в подключении, неверный порт, недостаток прав. Поэтому первый шаг при сбое службы — status, второй — journalctl -u.

Журнал по умолчанию может размещаться в оперативной памяти и теряться после перезагрузки, если постоянное хранение не включено. Проверьте это, если нужно расследовать сбой, случившийся до перезапуска компьютера.

Заблуждения и практика

«enable запускает службу». Нет, он лишь включает автозапуск при следующей загрузке; сейчас запускает start. «Если status показывает active, служба работает правильно». Она запущена, но может не отвечать по сети, проверьте порт. «systemd — только запуск». Нет, это также таймеры, управление сеансами и журналирование.

Отношение сообщества неоднозначно: сторонники ценят единообразие, критики — слишком широкий охват. Но на практике знание systemctl необходимо любому администратору современного Linux.

Отдельное замечание: правки юнитов лучше делать через systemctl edit, который создаёт файл переопределения и не затрагивает исходный.

Как попробовать самому

Выполните systemctl status ssh или sshd (название зависит от дистрибутива) и посмотрите состояние. Затем journalctl -u ssh -n 20 покажет последние строки. Для анализа загрузки используйте systemd-analyze: он показывает время старта и самые долгие этапы. Не останавливайте незнакомые службы: часть из них обеспечивает работу сети и входа в систему.

Итог проверки запишите: имя службы, статус, время последнего запуска. Эти сведения помогут сравнить состояние до и после изменения настроек и быстро вернуться к рабочей конфигурации.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно
linuxsystemdслужбы

Часто задаваемые вопросы

Читайте также