ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)
Понедельник, 31 марта, 2025
Сегодня у нас 1 праздник:
Международный День Резервного Копирования (World Backup Day). Пользователи сайта социальных новостей reddit предложили сделать дату 31.03 Международным днём резервного копирования, аргументируя это тем, что никогда заранее нельзя узнать, какие сюрпризы преподнесёт 1.04

Что такое Systemctl и как вы должны его использовать?

Что такое Systemctl и как вы должны его использовать?

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, таких как UbuntuAlmaLinux и Gentoo, теперь используют systemd в качестве системы инициализации по умолчанию. Debian поздно внедрил systemd в свой релиз, потому что многие разработчики отвергли его. В результате несколько разработчиков Debian, которые отвергли systemd, создали новый дистрибутив на основе Debian, Debian без systemd, под названием Devuan. Devuan — это Debian, который по-прежнему использует sysvinit.

Спустя несколько лет большинство согласится с тем, что systemd — это современная система, противоположная sysvinit. Sysvinit должен был исчезнуть из мира инициализации, потому что управление службами с помощью скриптов — непростая и сложная задача. Ubuntu когда-то заменила Sysvinit на Upstart, но затем отказалась от него и перешла на systemd. В systemd используется файл конфигурации, называемый юнитом. Создать файл юнита также просто благодаря его конфигурации в стиле ini.

 

Команды systemd

Ниже приведены несколько команд, которые вы можете использовать для управления своими сервисами с помощью 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 и как его использовать», пожалуйста, поделитесь им со своими друзьями. Спасибо.

Exit mobile version