Служебная команда не найдена debian

Обновлено: 29.06.2024

Системные задачи организованы в виде блоков. Наиболее распространенными единицами измерения являются службы (.service), точки монтирования (.mount), устройства (.device), сокеты (.socket) или таймеры (.timer). Например, запуск демона безопасной оболочки выполняется модулем ssh.service.

Systemd помещает каждую службу в выделенную группу управления (cgroup), названную в честь службы. Современные ядра поддерживают изоляцию процессов и выделение ресурсов на основе контрольных групп.

Цели – это группы объектов. Цели призывают единицы собрать систему вместе. Например, graphical.target вызывает все модули, необходимые для запуска рабочей станции с графическим пользовательским интерфейсом. Цели могут строиться поверх других или зависеть от других целей. Во время загрузки systemd активирует цель default.target, которая является псевдонимом для другой цели, такой как graphical.target.

Systemd создает и управляет сокетами, используемыми для связи между компонентами системы. Например, он сначала создает сокет /dev/log, а затем запускает демон syslog. Этот подход имеет два преимущества: во-первых, процессы, взаимодействующие с системным журналом через /dev/log, могут запускаться параллельно. Во-вторых, аварийные сервисы могут быть перезапущены без процессов, которые взаимодействуют через сокеты с потерей соединения. Ядро будет буферизировать связь, пока процесс перезапускается.

Дополнительную информацию см. на странице вышестоящего systemd.

Основное использование

systemctl — это основной инструмент, используемый для самоанализа и контроля состояния системы «systemd» и диспетчера служб. Например, вы можете использовать systemctl для постоянного включения/отключения служб или только для текущего сеанса. Обратитесь к справочной странице systemctl(1) за более подробной информацией.

Получение информации о состоянии системы

Показать статус системы:

Список неисправных единиц:

Список установленных файлов модулей:

Управление службами

Список всех запущенных служб:

Немедленно активирует службу "example1":

Немедленно деактивирует службу "example1":

Немедленно перезапускает службу "example1":

Показывает статус службы "example1":

Включает запуск "example1" при загрузке:

Отключает "example1", чтобы он не запускался во время загрузки:

Создание или изменение сервисов

Единицы определяются отдельными файлами конфигурации, называемыми файлами единиц. Тип устройства распознается по суффиксу имени файла, .mount в случае точки монтирования. Файлы модулей, предоставляемые Debian, находятся в каталоге /lib/systemd/system. Если файл локального модуля с таким же именем существует в каталоге /etc/systemd/system, он будет иметь приоритет, и systemd проигнорирует файл в каталоге /lib/systemd/system. Некоторые юниты создаются systemd без файла юнитов, существующего в файловой системе.

Системные администраторы должны помещать новые или измененные файлы модулей в /etc/systemd/system.

Вот пример:

Информацию о написании собственных сервисов см. в systemd/Services.

Установка и тестирование

systemd был включен в Debian wheezy в качестве предварительной версии технологии. Пожалуйста, убедитесь, что вы используете Debian jessie или новее, чтобы получить последнюю версию systemd.

Установка

Чтобы установить systemd, запустите:

Это установит пакеты systemd, но не настроит systemd в качестве вашей системы инициализации.

Настройка для тестирования

Чтобы протестировать systemd перед переключением на него по умолчанию, вы можете добавить в ядро ​​следующий параметр загрузки:

Это можно сделать в меню grub для однократной загрузки - нажмите "e" в меню grub и добавьте это в строку ядра. Например, в зависимости от параметров, необходимых для вашей конкретной системы, это может выглядеть примерно так:

Если PID 1 — systemd, ваша система работает с systemd.

Настройка по умолчанию

Чтобы использовать systemd, вы также должны установить systemd-sysv, который предоставляет символические ссылки для /sbin/init. Рекомендуется запускать его, когда он уже запущен под systemd, как описано в предыдущем разделе.

Чтобы загрузить систему с только что установленным systemd, просто перезагрузите компьютер.

Если вы запускаете самостоятельно скомпилированное ядро, убедитесь, что у вас установлена ​​версия 2.6.39 или новее, и включите следующие параметры:

Обновленный список см. в разделе "ТРЕБОВАНИЯ" в исходном файле README.

Отладка

Неудачные объекты

В некоторых случаях устройства переходят в состояние отказа. Команду status можно использовать, чтобы узнать некоторые подробности:

Неудачные единицы можно удалить вручную:

systemd зависает при запуске или завершении работы

Иногда необходимо выяснить, почему systemd зависает при запуске или перезагрузке/выключении.

Конечно, у вас может быть "временное" постоянное решение:

СОВЕТ: "man systemd" и "man systemd-system.conf"

СОВЕТ. Подробная информация об отладке systemd находится на этой странице FreeDesktop.

СОВЕТ: Как проверить параметры/параметры командной строки ядра?

"Установить уровень журнала. В качестве аргумента принимает числовой уровень журнала или известные символические имена syslog(3) (нижний регистр): emerg, alert, crit, err, warning, note, info, debug."< /p>

СОВЕТ: сохраните копию /sbin/init из пакета sysvinit на случай спасения (чтобы вы могли использовать init=/sbin/init.sysvinit в командной строке)!

Отладка ядра без отладки systemd в Джесси

Использование старого параметра ядра "debug" в Jessie включит ведение журнала отладки systemd, а также ведение журнала отладки ядра. Чтобы получить старое поведение, не используйте «отладку», вместо этого используйте параметр ядра «loglevel=7».

Ошибки и системы отслеживания ошибок

Известные проблемы и решения

Общие монтирования привязки

Поведение монтирования по умолчанию меняется в systemd. Ядро Linux выполняет монтирование привязки всего, что ниже / PRIVATE. Systemd меняет это на SHARED.

Таким образом, когда вы делаете это:

тогда /dev будет размонтирован и в вашей базовой/родительской системе!

Вместо этого вы можете сделать следующее:

это приведет к распространению изменений монтирования (а также параметров монтирования) в базовой/родительской системе в $CHROOT, но не из $CHROOT обратно в родительскую.

Обоснование изменения поведения по умолчанию можно найти в ошибке 739593, в частности в комментарии Ленарта к ней.

Сеанс SSH не завершается корректно при перезагрузке/выключении

Если вам случится перезагрузить/выключить удаленную машину через ssh, вы можете обнаружить, что ваш сеанс не завершен должным образом, оставив вас с нереагирующим терминалом до тех пор, пока не будет достигнуто время ожидания. Об этом была ошибка 751636. Чтобы решить эту проблему, нужно было установить:

что завершит сеанс ssh до разрыва сети. Обратите внимание, что для этого потребуется включить PAM в sshd.

Отсутствуют сообщения о запуске на консоли (tty1) после загрузки

В systemd console(tty1) обрабатывается по-другому, и если вы раньше проверяли, как прошла ваша загрузка, теперь вы увидите только пару неинформативных строк.

Чтобы иметь возможность получить полную расшифровку загрузки системы на вашей консоли, вам необходимо выполнить два шага.

<р>1. Добавьте в параметры ядра systemd.show_status=1 , например, через /etc/default/grub:

и запустите update-grub2 .

<р>2. Создайте файл /etc/systemd/system/getty@tty1.service.d/noclear.conf с содержимым:

отключить очистку терминала при вызове getty.

Изменения виртуальной и серийной консоли

Те, кто использовал inittab для включения/отключения виртуальных или последовательных консолей, заметят, что этот файл исчез из чистой установки. Теперь все это управляется через systemd напрямую. Например, вы можете включить последовательную консоль на COM1 с помощью:

Итак. не лучше ли было бы вместо того, чтобы помещать сюда командную строку ядра и/или биты GRUB, которые не специфичны для systemd, вместо этого ссылаться на другое место, где они лучше и более авторитетно задокументированы на вики Debian. если это существует. или когда он появится?

Однако обычно предпочтительнее добавлять console=ttyS0 в командную строку ядра, так как это также включает вывод ядра при перезагрузке. Для, например. GRUB, это делается путем добавления следующего в /etc/default/grub:

<р>. и запустить update-grub. Однако это вступит в силу только при следующей перезагрузке.

Обратите также внимание, что Linux поддерживает несколько консолей для вывода, но только одну для ввода. Последняя из них (или по умолчанию, если она не указана) из командной строки ядра указывает, какая из них используется для ввода, и все они используются для вывода. Например. для GRUB:

После запуска update-grub и перезагрузки будет консольный ввод с /dev/ttyS0 и вывод как на это устройство, так и на устройство /dev/tty0. Также обратите внимание, что серийные параметры также могут быть указаны, например:

Бесхозные процессы

Поскольку он управляет сеансами пользователей (принимая на себя роль X или других компонентов), systemd может немного изменить то, как процессы выживают после выхода из системы. По умолчанию, когда X завершает работу, все процессы должны завершиться, и systemd очистит сеанс, но есть некоторые крайние случаи, когда определенные процессы не очищают себя должным образом.

Вы можете настроить, как systemd будет управлять оставшимися процессами, с помощью параметра KillUserProcesses= в файле logind.conf. Если установить для этого параметра значение yes, процессы будут принудительно уничтожены при завершении сеанса. Обратите внимание, что это приведет к поломке таких инструментов, как screen или tmux, если только они не настроены для работы в отдельном модуле user@.service и если для параметра enable-linger установлено значение да в логинктл. Простой способ сделать это «на лету» — запустить программу в «переходной области» с помощью systemd-run:

Теперь обычно сеансы должны очищаться после себя, и такие проблемы должны быть исправлены без необходимости возвращаться к KillUserProcesses=yes кувалде. Хороший способ составить список затронутых процессов — сгруппировать их по «управляющей группе» с помощью команды systemd-cgls:

У вас есть окно служб в операционной системе Windows, через которое вы можете управлять всеми своими службами, включая их просмотр, запуск и остановку. Точно так же у вас есть терминал в операционных системах Linux (Debian), чтобы делать то же самое.

В этой статье я сосредоточусь на различных способах запуска, остановки и перезапуска служб в Debian версии 10.

Как составить список всех служб в Debian 10

Если вы хотите просмотреть все службы, работающие в Debian 10, вы можете запустить следующую команду.

Получить список сервисов в Debian 10

Если вы хотите получить более подробный список всех служб и процессов, запущенных в вашей операционной системе Debian, выполните следующую команду.

Использование команды systemctl для отображения списка сервисов

Вы должны выполнить приведенные выше команды с привилегиями root, в противном случае вы получите сообщение об ошибке, как показано на следующем снимке экрана.

Выполнять команды от имени root

Как проверить статус конкретной службы с помощью init.d

Существует несколько способов проверить состояние конкретной службы, независимо от того, запущена она или нет. Одним из таких способов является использование init.d. Вы можете выполнить команду с привилегиями root, используя следующий синтаксис,

Давайте проверим состояние сетевой службы. Полная команда должна выглядеть следующим образом:

Получить статус сервис

Сверху хорошо видно, что сетевые интерфейсы активны.

Как проверить статус конкретной службы с помощью systemctl

Один из вторых способов проверки состояния конкретной службы — использование systemctl. Синтаксис команды следующий:

Мы снова возьмем пример сетевой службы, чтобы проверить ее состояние. Для этого выполните следующую команду с привилегиями root на терминале Debian.

Когда возвращаются результаты, они ясно показывают, что сетевая служба работает и интерфейсы включены.

Как остановить, запустить и перезапустить определенную службу

Есть два способа остановки и запуска определенной службы. Я перечислю здесь оба метода.

Запуск и остановка службы с помощью init.d

Позвольте мне начать с остановки уже запущенной сетевой службы, чтобы показать вам, как остановить любую службу с помощью init.d. Выполните следующую команду с привилегиями root,

Полный синтаксис команды должен выглядеть следующим образом

Чтобы подтвердить статус сетевой службы, выполним уже описанную команду.

получить статус сетевой службы

На приведенном выше снимке экрана показано, что сетевая служба не запущена, а интерфейсы неактивны.

После того как сетевая служба была остановлена, давайте запустим ее, чтобы показать вам способ запуска любой службы. Команда должна выглядеть следующим образом:

Поэтому синтаксис команды должен быть следующим.

Подтвердим, что сетевая служба успешно запущена. Поэтому берите статус.

Мы успешно запустили сетевую службу, как показано на снимке экрана выше.

Запуск и остановка службы с помощью systemctl

Службы можно запускать и останавливать с помощью systemctl. Давайте остановим уже работающую сетевую службу. Выполните следующую команду с привилегиями root,

Команда не возвращает никакого вывода на экран. Для подтверждения выполните следующую команду,

Запуск и остановка службы с помощью systemd и потом проверьте статус

На приведенном выше снимке экрана ясно видно, что сетевая служба остановлена, а сетевые интерфейсы неактивны.

После запуска службы позвольте мне запустить ее, чтобы показать вам способ запуска любой службы. Синтаксис команды следующий:

После успешного выполнения приведенной выше команды на терминале ничего не отобразится.Чтобы убедиться, что служба успешно запущена, проверьте ее статус с помощью уже описанной команды.

Выходные данные команды показывают, что сетевая служба успешно запущена и ее интерфейсы работают.

Перезапустите службу с помощью init.d и systemctl

Вы можете напрямую перезапустить любую службу с помощью init.d и systemctl. Синтаксис обеих команд должен быть следующим:

Чтобы перезапустить сетевую службу, приведенные выше команды должны выглядеть следующим образом.

При успешном выполнении эти команды ничего не возвращают на терминал. Вы можете подтвердить их статус после поиска активности и отметки времени в выводе команды.

Надеюсь, вам понравилась эта статья. Если у вас есть какие-либо проблемы или предложения, сообщите мне об этом, написав в разделе комментариев.

Карим Буздар

Об авторе: Карим Буздар имеет степень инженера в области телекоммуникаций и несколько сертификатов системного администратора. Как ИТ-инженер и технический автор, он пишет для различных веб-сайтов. Вы можете связаться с Каримом в LinkedIn

Поиск

Об этом сайте

Последние руководства


сообщить об этом объявлении

В этом руководстве объясняется, как запускать, останавливать и перезапускать службы в Debian 11 Bullseye с помощью команд systemctl и service.

Услуги для Linux Debian 11

Служба – это программа, работающая в фоновом режиме и используемая при необходимости. Apache, ssh, Nginx или Mysql — одни из самых известных сервисов. В Debian, включая Debian 11 Bullseye, службы управляются с помощью Systemd, замены System V для инициализации системы и ее компонентов, включая службы.

Запуск, остановка и перезапуск служб в Debian 11 с помощью Systemd

Systemd — это пакет для управления службами и демонами Linux (последняя буква "d" означает демоны Unix). Команда systemctl позволяет запускать, останавливать, перезапускать и проверять состояние служб. Его цель — унифицировать конфигурацию и поведение всех дистрибутивов Linux, заменив старые системы инициализации Unix SystemV и BSD.

В этом учебном разделе показаны примеры выполнения действий, описанных в следующей таблице.

< /tr>
ДЕЙСТВИЕ КОМАНДА
Проверить статус службы статус sudo systemctl
Остановить службу sudo systemctl stop
Запустить службу sudo systemctl start < /td>
Перезапустить службу sudo systemctl restart

Как показано в предыдущей таблице, синтаксис проверки состояния службы с помощью Systemd следующий:

Поэтому, чтобы проверить состояние службы ssh, вы можете запустить следующую команду.


Как видно на снимке экрана выше, служба ssh активна и работает правильно.

Чтобы остановить службу, синтаксис аналогичен, просто замените параметр status на действие, которое вы хотите выполнить, в данном случае действие должно остановить.< /p>

Например, чтобы остановить службу ssh, выполните приведенную ниже команду.


Как видите, после остановки службы и проверки состояния служба ssh теперь отображается как неактивная (мертвая).

Чтобы запустить службу, просто замените stop на start, как показано на снимке экрана ниже. Чтобы запустить службу ssh, выполните:


Как видите, служба снова работает.

Чтобы перезапустить службу, вам нужно ввести параметр reboot. Следующая команда используется для перезапуска службы ssh.


Вот как службы перезапускаются с помощью Systemd.

Остановка, запуск и перезапуск служб в Debian 11 с помощью команды службы

Команда service используется для управления службами в каталоге /etc/init.d, несмотря на то, что некоторые дистрибутивы перенаправляют эту команду на описанную выше команду systemctl.

Эту команду также можно использовать для остановки, запуска и перезапуска служб в соответствии с синтаксисом, описанным в таблице ниже.

< /tr>
ДЕЙСТВИЕ КОМАНДА
Проверить статус службы статус службы sudo
Остановить службу остановить службу sudo
Запустить службу запустить службу sudo < /td>
Перезапустить службу перезагрузка службы sudo

В этом разделе показаны примеры применения команд, описанных в таблице выше.

Чтобы проверить состояние службы (в данном случае ssh) с помощью команды службы, используйте приведенный ниже синтаксис. Замените «ssh» сервисом, который вы хотите проверить.


Как видите, служба ssh активна и работает правильно.

Команда, показанная на снимке экрана ниже, используется для остановки служб. Запустите его, чтобы остановить службу ssh, или замените «ssh» на службу, которую вы хотите остановить.


Как видите, после запуска service ssh stop ssh теперь неактивен.

Чтобы снова запустить службу ssh, используйте следующий синтаксис. Не забудьте заменить «ssh» на сервис, который вы хотите загрузить.


Наконец, чтобы перезапустить службы с помощью команды service, используйте приведенный ниже синтаксис.


Как видите, служба работает правильно.

Следующую команду можно использовать для перезагрузки конфигурации службы без прерывания самой службы.

Заключение

Сервисы – это неотъемлемая часть любого устройства. Правильное управление службами является обязательным для любого пользователя уровня Linux. Как вы могли видеть из этого руководства, управление службами довольно просто и может выполняться различными способами. Всегда имейте в виду, что рекомендуемый метод работы со службами в Linux — это команда systemctl, описанная в первом разделе этой статьи. Другие методы (например, непосредственное обращение к каталогу /etc/init.d) считаются устаревшими и были удалены из первой версии этого руководства. Все команды, описанные в этом руководстве, полезны для остановки, запуска, перезапуска и проверки состояния службы, но есть и дополнительные функции, которые вы можете изучить на соответствующих справочных страницах.

Спасибо, что прочитали это руководство, объясняющее, как останавливать, запускать и перезапускать службы в Debian 11. Следите за нашими новостями, чтобы получать дополнительные советы и руководства по Linux.

Об авторе

Дэвид Адамс

Дэвид Адамс — системный администратор и писатель, специализирующийся на технологиях с открытым исходным кодом, программном обеспечении для обеспечения безопасности и компьютерных системах.

Debian и Ubuntu — это операционные системы Linux, которые работают практически одинаково и имеют особый способ работы со службами, хотя теперь они используют «Systemd», они по-прежнему используют команду «service». Хотя они могут показаться небольшими, всегда полезно иметь определенные ярлыки для выполнения задач. Службы в Debian и Ubuntu, которые обычно запускаются при каждом запуске системы, имеют такие параметры, как Запустить, Остановить, Перезапустить, Перезагрузить< /em> и т. д.

статус службы Debian для всех терминалов

Содержание

Формат представляет собой команду "служба", за которой следует имя службы, а затем аргумент, управляющий состоянием службы. Этот формат будет применяться ко всем аргументам, упомянутым в начале. Если служба не существует, команда указывает на нее с ошибкой, аналогичной "Не удалось запустить abc.service: модуль abc.service не найден.". Если мы попытаемся обработать существующую службу с несуществующим аргументом, мы получим список со всеми аргументами, доступными для этой службы, поскольку каждая служба обрабатывает разные аргументы состояния.

1. Перезапустите службы, используя аргумент «перезапустить»

В этом случае мы перезапускаем службу Nginx.

2. Проверить текущий статус службы с помощью «status»

С помощью этой команды мы можем проверить, работает ли Apache2 и есть ли у него проблемы.

3. Перезагрузите конфигурацию службы с помощью «reload»

Перезагрузка конфигурации может быть полезна, когда изменилась только конфигурация, которая управляет службой, если она ее поддерживает, поскольку в случае «перезагрузки» с «перезагрузкой» можно избежать полной остановки службы, а затем запустите его.

4. Временно остановите службу с помощью «stop»

Службы обычно запускаются автоматически при запуске системы, поэтому, если мы остановим службу, это будет только временно и будет запущено снова при следующем запуске, если у нее нет проблем.

5. Список всех сервисов и их текущий статус

Это, несомненно, один из моих любимых аргументов, поскольку в нем перечислены все службы, установленные в нашем дистрибутиве, а также указано, запущены они или нет.Пример вывода выглядит следующим образом:

Слева в квадратных скобках со знаком минус "[ - ]" указаны службы, которые остановлены, со знаком плюс "[ + ]" запущенные службы, а со знаком вопроса "[ ? ]" Я не совсем понимаю, но это могут быть особые случаи, когда Systemd не может правильно определить их статус, но, на мой взгляд, они могут быть запущены или остановлены.

Читайте также: