Systemd — это популярная система инициализации, которая служит инструментом управления различными системами в операционной среде Linux. С помощью systemd мы можем выполнять важные административные функции и задачи по обслуживанию, такие как управление системными ресурсами, настройка параметров запуска, ведение журналов и протоколирование. В то же время systemctl — это команда, используемая для управления службами systemd, которые в настоящее время являются стандартными для Linux.
Леннарт Поеттеринг — разработчик systemd, инженер-программист, который сейчас работает в Microsoft. Ранее Леннарт Поеттеринг также создал противоречивые программы, а именно Avahi и PulseAudio.
# — указанные команды должны выполняться с правами суперпользователя либо напрямую от имени пользователя root, либо с помощью команды sudo $ — указанные команды должны выполняться от имени обычного пользователя
Система инициализации – это первый процесс после того, как ядро Linux вступает в действие в процессе загрузки. Он инициализирует различные службы управления устройствами, ведения журнала и сетевые службы. ‘service’ – это устаревшая команда, которая используется в старых версиях систем Linux / Unix. Инструмент используется для запуска, остановки системных служб и управления ими. Он по-прежнему доступен во многих современных системах, но большинство дистрибутивов Linux используют systemctl
уже сейчас.
Systemd действительно вызывает споры по нескольким причинам. Во-первых, многие люди думают, что systemd не уважает философию Unix. Утверждается, что systemd слишком сложный и монолитный, что затрудняет устранение неполадок. Во-вторых, некоторые критики systemd утверждают, что systemd – это не только система инициализации, но и берет на себя множество функций. Например, systemd пытается управлять сетью, cron, fstab, системным журналом и т.д. Это означает, что systemd – это не программа с единственным назначением, а с множеством функций. Наконец, systemd подвергается критике за то, что его файл журнала не основан на тексте, как обычные журналы Unix и Linux. Вместо этого это двоичный файл журнала.
Среди упомянутых выше критических замечаний в адрес systemd некоторые просто несостоятельны. Например, systemd не считается модульной системой. Леннарт Поеттеринг отвечает на такие замечания на своей странице в блоге под названием «Самые распространённые мифы».
Большинство основных дистрибутивов Linux, таких как Ubuntu, AlmaLinux и Gentoo, теперь используют systemd в качестве системы инициализации по умолчанию. Debian поздно внедрил systemd в свой релиз, потому что многие разработчики отвергли его. В результате несколько разработчиков Debian, которые отвергли systemd, создали новый дистрибутив на основе Debian, Debian без systemd, под названием Devuan. Devuan — это Debian, который по-прежнему использует sysvinit.
Спустя несколько лет большинство согласится с тем, что systemd — это современная система, противоположная sysvinit. Sysvinit должен был исчезнуть из мира инициализации, потому что управление службами с помощью скриптов — непростая и сложная задача. Ubuntu когда-то заменила Sysvinit на Upstart, но затем отказалась от него и перешла на systemd. В systemd используется файл конфигурации, называемый юнитом. Создать файл юнита также просто благодаря его конфигурации в стиле ini.
Ниже приведены несколько команд, которые вы можете использовать для управления своими сервисами с помощью systemd.
Чтобы перезапустить службу, используйте systemctl restart. Например, перезапустите nginx.
# systemctl restart nginx
Для запуска, остановки и перезагрузки замените restart на start, stop или reload .
Systemctl также может запускать / останавливать / перезапускать несколько служб с помощью одной команды, например:
# systemctl restart nginx mysql postfix
Чтобы включить службу при запуске, используйте следующую команду:
# systemctl enable nginx
В качестве альтернативы, если вместо этого вы хотите включить службу при запуске и запустить ее прямо сейчас, вы могли бы использовать:
# systemctl enable --now nginx
Чтобы отключить службу при запуске, введите
# systemctl disable apache2
Если вам нужно просмотреть файл systemd сервиса, вы можете ввести следующий пример:
# systemctl cat nginx
Чтобы перезапустить сервер, вы должны использовать:
# systemctl reboot
Для завершения работы сервера используется следующая команда:
# systemctl poweroff
Если вы хотите просмотреть текущие журналы, используйте:
# journalctl -f
Для просмотра журналов службы вы можете использовать следующее:
# journalctl -u mysql
Вы можете использовать команду, аналогичную приведенной ниже, при поиске определенного диапазона дат. В этом случае мы просматриваем журналы с 29 по 31 августа.:
# journalctl --since "2024-08-29" --until "2024-08-31"
Наконец, для просмотра самых последних журналов вы можете использовать следующую команду:
# journalctl --since "3 hours ago"
Как и команда service, systemctl – очень универсальная команда. Она позволяет включать, перезагружать, запускать, останавливать и проверять состояние служб, запущенных на вашем компьютере с Linux. Systemctl служит простым в использовании и мощным интерфейсом для настройки файлов в systemd. Например, требуется всего одна или две команды, чтобы отключить службу при загрузке с помощью systemctl.
Service и systemctl в основном преследуют одну и ту же цель. Многие сходства между ними введены намеренно, чтобы позволить пользователям более плавно перейти на systemctl. Однако между ними есть различия, о которых следует помнить при начале работы с системой инициализации в Linux.
Наиболее существенное различие между service и systemctl заключается в том, что они принадлежат разным системам инициализации. Service относится к классическому процессу инициализации Linux SysVinit (System V Init). Systemctl принадлежит systemd, преемнику SysVinit, и современный процесс инициализации используется во многих системах Linux. Потому что service и systemctl являются частью разных процессов инициализации. Они работают с системными файлами инициализации в разных каталогах. Сервис работает с файлами системы инициализации, находящимися в /etc/init.d . В то же время systemctl работает с файлами системы инициализации, находящимися в /lib/systemd.
Systemd запускает службы параллельно, а не последовательно, поэтому время загрузки у него быстрее, чем у SysVinit. Он также предлагает несколько более сложное управление системными демонами через интерфейс командной строки (CLI).
Вот и все! Вам больше не нужно спрашивать, что такое systemctl, и теперь вы знаете, как им пользоваться.
Если вам понравился этот пост “Что такое systemctl и как его использовать”, пожалуйста, поделитесь им со своими друзьями. Спасибо.