Система инициализации
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: он показывает время старта и самые долгие этапы. Не останавливайте незнакомые службы: часть из них обеспечивает работу сети и входа в систему.
Итог проверки запишите: имя службы, статус, время последнего запуска. Эти сведения помогут сравнить состояние до и после изменения настроек и быстро вернуться к рабочей конфигурации.