Service и systemctl – это две утилиты командной строки, используемые для управления системными службами. Обе утилиты принадлежат двум разным системам инициализации, SysV и systemd соответственно.
В этой статье мы расскажем о командах service и systemctl, а также о том, чем они отличаются, когда дело доходит до управления службами.
Прежде чем идти дальше, давайте сначала разберемся с двумя популярными системами инициализации Linux: System и Systemd.
System V против Systemd
Система инициализации в Linux является важной частью процесса загрузки. Это первый процесс с PID 1, который инициируется при загрузке системы. Затем он запускает процессы, присутствующие в файле inittab. System V также знает, что SysV и systemd являются популярными системами инициализации Linux.
SysV – это более старая система инициализации, которая была частью старых дистрибутивов Unix и Linux. Он управляет системными службами с помощью скриптов, расположенных в /etc/init.d. Некоторые дистрибутивы Linux, которые все еще используют SysV, – это Slackware, Gentoo и antiX Linux.
С другой стороны, systemd был запущен в 2010 году и быстро принят многими дистрибутивами Linux. Система инициализации systemd управляет сервисами через файлы .service. Теперь это часть всех современных дистрибутивов Linux, включая Red Hat Enterprise Linux, CentOS, Amazon Linux, Fedora, Debian, Ubuntu и дистрибутивы, основанные на этих операционных системах.
Systemd намного эффективнее по сравнению с SysV. Он обеспечивает более быстрое время загрузки, эффективное управление службами и обработку зависимостей.
Обе системы инициализации предоставляют две утилиты командной строки для управления сервисами.
- service
- systemctl
В следующих разделах руководства мы расскажем об этих двух утилитах.
Команда service
Команда service представляет собой оболочку скрипта, которая запускает скрипты, расположенные в каталоге /etc/init.d. Он был разработан для управления сервисом системы инициализации SysV или System V. Дистрибутивы Linux, использующие SysV в качестве системы инициализации, используют команду service для управления службами.
Общий синтаксис использования сервисной команды приведен ниже.
service [service_name] [action]
Чтобы узнать состояние служб, контролируемых System V, используйте команду service с параметром –status-all.
service --status-all
где:
- + указывает, что служба запущена,
- – показывает, что служба неактивна.
Текущее состояние любой конкретной службы также можно проверить, упомянув название службы.
service [service_name]
Ниже перечислены некоторые другие полезные сервисные команды, такие как запуск, остановка и перезапуск сервиса.
service [service_name] start service [service_name] service [service_name] restart
Эта сервисная команда предоставляет базовый контроль для управления службами. Большинство дистрибутивов Linux заменили SysV в качестве системы инициализации, но из-за устаревшей совместимости эта команда по-прежнему поставляется во многих последних дистрибутивах Linux “из коробки”.
Команда systemctl
Используя команду systemctl, вы можете управлять службами в каталогах /lib/systemd/system и /etc/systemd/system. Это компонент systemd; система инициализации, встречающаяся в большинстве современных дистрибутивов Linux.
systemctl разработан для обеспечения большего контроля над управлением системными службами. Общий синтаксис использования команды systemctl приведен ниже:
systemctl [option] [service_name]
Чтобы проверить состояние всех сервисов, используйте следующую команду.
systemctl list-units --type=service --all
Для конкретного использования сервиса:
systemctl status [service_name]
Ниже приведены команды для базового управления сервисом с использованием systemctl:
systemctl enable [service_name] systemctl start [service_name] systemctl stop [service_name] systemctl disable [service_name] systemctl restart [service_name]
Команда systemctl выходит за рамки того, что касается управления службами. В таблице ниже приведены некоторые расширенные команды systemctl.
list-paths | Чтобы указать путь ко всем сервисам в памяти |
is-active [service_name] | Чтобы проверить, запущена ли служба или модуль или нет |
list-dependencies [service_name] | Для печати списка зависимостей указанного сервиса |
reset-failed | Для сброса служб, которые не удалось загрузить из-за какой-либо неисправности |
mask [service_name] | Отключает службу и не позволяет ей запуститься |
get-default | Чтобы вывести уровень запуска по умолчанию или целевое значение |
set-default [target] | Чтобы установить уровень запуска по умолчанию или целевое значение |
is-system-running | Для проверки рабочего состояния системы |
reboot | Как перезагрузить систему |
poweroff | Чтобы завершить работу системы |
Почему в дистрибутивах Linux до сих пор существует команда service с systemd init System
Команда service по-прежнему является частью многих дистрибутивов Linux, поскольку она является скриптом-оболочкой и абстрагирует базовую систему инициализации, будь то SysV или systemctl. Например, в Ubuntu команда service перенаправляется на systemctl.
Заключение
Сервис и systemctl – это две утилиты командной строки, принадлежащие системам инициализации SysV и systemd соответственно. Несмотря на замену команды service в современных дистрибутивах Linux, она остается ключевым инструментом для обслуживания сервисов благодаря простоте и совместимости. С другой стороны, systemctl является частью всех текущих дистрибутивов Linux и предоставляет расширенные возможности для администрирования сервисов.