Разница между сервисом и systemctl в Linux
Лучшее знание сервисов и systemctl позволит вам без проблем работать с ними.
Что такое сервисная команда в Linux?
В Linux команда службы представляет собой сценарий-оболочку, который позволяет пользователям легко настраивать системные службы и взаимодействовать с ними. Он предшествует systemd и в основном работает со скриптами из /etc/init.d.
Хотя systemctl в значительной степени превзошел предыдущее значение службы, он продолжает оставаться актуальным благодаря многим устаревшим функциям.
Изменение между родственными системами инициализации — SysVinit на systemd — вызвало споры, но необходимость возникла из-за проблем с функциональностью системы инициализации.
systemd запускает службы параллельно, а не в последовательном порядке, что сокращает время запуска по сравнению с SysVinit, а также обеспечивает немного более детальный контроль над системными демонами через интерфейс командной строки (CLI).
Что такое команда systemctl в Linux?
Подобно службам, systemctl — чрезвычайно гибкая команда, которая позволяет вам включать, перезагружать, запускать, останавливать и проверять состояние служб, работающих в системе Linux.
systemctl служит мощным и простым в использовании интерфейсом для настройки файлов в systemd — например, для отключения службы при запуске с помощью systemctl требуется всего одна или две команды.
systemctl обратно совместим с системой инициализации SysVinit, которая в основном используется со службой. systemctl не является прямым преемником службы, но гораздо более гибок с точки зрения инструментов, которые он предоставляет для управления системными службами.
Вы можете выполнять такие задачи, как создание маски или отключение службы, всего в одну или две строки.
Разница между сервисом и systemctl
service и systemctl в основном служат одной и той же цели. Многие сходства между ними были преднамеренно включены, чтобы пользователи могли более плавно переходить от службы к systemctl.
Однако между двумя командами есть некоторые различия, о которых следует знать, приступая к работе с системой инициализации в Linux.
1. Различные системы инициализации
Наиболее существенная разница между service и systemctl заключается в том, что они относятся к разным системам инициализации. принадлежит SysVinit (System V Init), также известному как классический процесс инициализации Linux.
systemctl принадлежит systemd, преемнику SysVinit и современному процессу инициализации, используемому во многих системах Linux.
Поскольку service и systemctl являются частью разных процессов инициализации, они работают с системными файлами, инициализированными в разных каталогах. service работает с системными файлами инициализации, содержащимися в /etc/init.d, а systemctl работает с системными файлами инициализации, содержащимися в /lib/systemd.
Как правило, система инициализации, с которой вы столкнетесь в готовых установках Linux, — это systemd, поэтому вам нужно ознакомиться с использованием systemctl для взаимодействия с ней.
Если вы собираетесь работать с системами, выпущенными до или одновременно с выпуском systemd в 2010 году, вам не помешает привыкнуть к использованию команды service.
2. Совместимость
service по-прежнему остается чрезвычайно полезной командой с точки зрения совместимости — как команда-оболочка она имеет возможность перенаправляться к диспетчеру служб, используемому в разных системах. Вы должны запланировать изучение и сделать его частью своего арсенала, если вы будете работать с различными системами Linux.
3. Основные функции
Одно ключевое различие между systemctl и сервисом заключается в том, как они работают. service — это команда высокого уровня, которая перенаправляет на базовый менеджер служб, используемый в конкретной системе, что означает, что она достаточно гибка между системами. Он может перенаправлять на /etc/init.d, upstart или даже на systemctl. В то время как команды systemctl напрямую взаимодействуют с systemd.
4. Способность
С точки зрения того, чего вы можете достичь, можно с уверенностью сказать, что systemctl выходит за рамки базовых возможностей. В дополнение к основным функциям, таким как запуск, остановка, включение или отключение определенной службы, вы также можете настроить расширенные конфигурации с помощью systemctl.
service более ограничен из-за требуемой совместимости с базовыми диспетчерами служб, на которые он опирается.