Как удалить service linux

Как в Linux пользоваться командой systemctl

Вместе с подсистемой systemd появилась команда systemctl. Она позволяет управлять основными процессами Linux. Ниже представлена небольшая инструкция в виде шпаргалки наиболее используемых команд.

Общий синтаксис

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

Примерный вывод команды:

1) название юнита;
2) тип юнита (например, service: служба или демон, mount: точка монтирования, device: устройства);
3) состояние юнита (загружен или нет);
4) обобщенный статус юнита (active: выполняется, inactive: не был запущен, maintenance: требуется внимание администратора);
5) текущий статус (запущен или нет);
6) описание.

Шпаргалка по часто используемым командам systemctl

1. Посмотреть статус службы:

systemctl status network

* покажет статус службы на примере сети network

2. Запустить сервис:

systemctl start mysql

* запустит сервис баз данных на примере mysql

3. Остановить службу:

systemctl stop ntpd

* остановит сервис времени ntpd

4. Перезапустить службу:

systemctl restart nginx

* перезапустит веб-сервер nginx

5. Включить автозапуск службы:

systemctl enable apache

* разрешит автозапуск веб-сервера apache

6. Отключить автозапуск службы:

systemctl disable firewalld

* запретит автозапуск брандмауэра firewalld

7. Выполнить команду на удаленной системе:

systemctl —host root@192.168.0.15 stop cron

* остановит cron на компьютере с IP-адресом 192.168.0.15, подключившись под учетной записью root.

8. Перезагрузить сервер:

* перезагрузит локальный сервер.

9. Проверка работы сервиса.

Выполняется с помощью опции is-active:

systemctl is-active docker

* в данном примере мы проверим работу службы docker.

а) Если сервис запущен, мы увидим:

б) Если не запущен:

в) Если такого сервиса нет в системе:

Если сервис не работает или его нет в системе, команда вернет код ошибки, таким образом конструкция:

systemctl is-active docker && docker run hello-world

. приведет к выполнению команды docker run hello-world только в том случае, если сервис docker работает.

Автозапуск

Подсистему systemd также можно использовать для автозапуска сервисов или скриптов. Для этого в каталоге /usr/lib/systemd/system создаем юнит (файл) с расширением .service. Подробнее разберем на примере сервиса bind:

Содержимое может быть следующего содержания:

[Unit]
Description=Berkeley Internet Name Domain (DNS)
Wants=nss-lookup.target
Wants=named-setup-rndc.service
Before=nss-lookup.target
After=network.target
After=named-setup-rndc.service

[Service]
Type=forking
Environment=NAMEDCONF=/etc/named.conf
EnvironmentFile=-/etc/sysconfig/named
Environment=KRB5_KTNAME=/etc/named.keytab
PIDFile=/run/named/named.pid
ExecStartPre=/bin/bash -c ‘if [ ! «$DISABLE_ZONE_CHECKING» == «yes» ]; then /usr/sbin/named-checkconf -z «$NAMEDCONF»; else echo «Checking of zone files is disabled»; fi’
ExecStart=/usr/sbin/named -u named -c $ $OPTIONS
ExecReload=/bin/sh -c ‘/usr/sbin/rndc reload > /dev/null 2>&1 || /bin/kill -HUP $MAINPID’
ExecStop=/bin/sh -c ‘/usr/sbin/rndc stop > /dev/null 2>&1 || /bin/kill -TERM $MAINPID’
PrivateTmp=true

* как правило, файл разделен на 3 части:

  • Unit — позволяет определить метаданные для юнита.
  • Service — раздел для основной конфигурации юнита.
  • Install — определение поведения для юнита при его включении или отключении.

Подробнее можно почитать о структуре и возможных опциях на странице https://linux-notes.org/pishem-systemd-unit-fajl/

После внесения изменений и сохранения файла, необходимо перечитать изменения командой:

Читайте также:  Linux дата смены пароля

Теперь можно разрешить автозапуск:

systemctl enable named

Редактирование сервисов

Если мы хотим внести изменения в юнит-файл сервиса, который был установлен с последним, необходимо использовать drop-in файл или файл переопределения настроек. В противном случае, после обновления программы наши изменения могут быть удалены.

И так, мы для примера взяли юнит для bind. Чтобы создать для него drop-in файл, вводим:

systemctl edit named

И вносим, например, такие изменения:

* будет создан файл /etc/systemd/system/named.service.d/override.conf, который будет переопределять настройки основного юнит-файла. В данном примере, мы указываем на необходимость перезапуска сервиса при сбое.

Чтобы убедиться в использовании Drop-In файла смотрим статус сервиса:

Источник

Управление службами Systemd. Часть 1 из 3

Systemd — это система инициализации и системный менеджер, который становится новым стандартом для Linux. Systemd управляет юнитами, которые определяются в так называемых юнит-файлах. Cамым распространённым юнитом является сервис (файл с расширением .service). Основной инструмент для управления сервисами — команда systemctl .

Управление сервисами

Основная цель Systemd — инициализировать компоненты, которые должны запускаться после загрузки ядра Linux. Systemd (и команда systemctl ) также используется для управления сервисами и демонами сервера.

Запуск и остановка сервиса

Для запуска сервиса предназначена команда start :

Чтобы остановить сервис, достаточно ввести команду stop :

Перезапуск и перезагрузка

Для запуска сервиса systemd предназначена команда restart :

Если приложение может перезагрузить свои конфигурационные файлы (без перезапуска), можно использовать команду reload :

Если не известно, может ли сервис перезагрузить свои файлы, тогда используется команда reload-or-restart . Она перезагрузит сервис, а если это невозможно — перезапустит его.

Включение и отключение сервисов

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

Это создаст символическую ссылку на файл сервиса (этот файл обычно расположен в /lib/systemd/system или /etc/systemd/system ) в специальном каталоге, где Systemd ищет файлы для автозапуска (обычно /etc/systemd/system/something.target.want ).

Посмотрим содержимое каталога /etc/systemd/system и отфильтруем только директории *.wants :

Заглянем в директорию bluetooth.target.wants :

Заглянем в директорию multi-user.target.wants :

Чтобы убрать сервис из автозагрузки, нужно ввести:

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

Проверка состояния сервиса

Для проверки состояния сервиса предназначена команда status :

Эта команда выведет состояние сервиса, иерархию групп и первые несколько строк лога. Например, при проверке состояния сервера Nginx, можно увидеть такой вывод:

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

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

Обзор состояния системы

Ранее мы рассмотрели команды, необходимые для управления отдельными сервисами, но они не очень полезны для изучения текущего состояния системы. Существует несколько команд systemctl, которые предоставляют эту информацию.

Просмотр списка текущих юнитов

Для просмотра списка текущих юнитов предназначена команда list-units :

В выводе есть такие столбцы:

  • UNIT — название юнита
  • LOAD — конфигурация юнита обработана?
  • ACTIVE — сводное состояние юнита (запущен или нет)
  • SUB — состояние более низкого уровня
  • DESCRIPTION — краткое описание функций юнита
Читайте также:  Bluetooth windows 10 gone

Поскольку команда list-units показывает по умолчанию только активные юниты, все записи будут показывать loaded в столбце LOAD и active в столбце ACTIVE .

Чтобы увидеть все юниты, которые загрузила (или попыталась загрузить) система Systemd, независимо от того, активны ли они в данный момент:

Можно использовать другие флаги для фильтрации результатов. Например, флаг state можно использовать для определения состояний LOAD , ACTIVE или SUB . Флаг all нужно оставить, чтобы система отображала неактивные юниты:

Еще один популярный фильтр — это type :

Флаги можно комбинировать:

Список юнит-файлов

Команда list-units отображает только юниты, которые система Systemd попыталась обработать и загрузить в память. Поскольку Systemd избирательно читает только те юнит-файлы, которые кажутся ей необходимыми, список не будет включать все доступные юнит-файлы. Чтобы просмотреть список всех доступных юнит-файлов (включая те, что Systemd не пыталась загрузить), нужно использовать команду list-unit-files .

Обычно столбец STATE содержит значения enabled , disabled , static или masked . В этом контексте static означает, что в юнит-файле нет раздела install , который используется для включения юнита. Таким образом, эти юниты невозможно включить. Обычно это означает, что юнит выполняет одноразовое действие или используется только как зависимость другого юнита и не должен запускаться сам по себе.

Источник

Как удалить системные сервисы

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

Откуда это исходит и как я могу их полностью удалить?

Мой рецепт уничтожения сервиса (будьте осторожны с rm высказываниями!)

Возможно, что служба systemd «оборачивает» сценарии старого стиля в /etc/init.d, так что вы можете захотеть это тоже почистить, но это не то место, где живут службы systemd.

Вы, вероятно, ищете reset-failed :

Со страницы справочника systemd:

Сбросьте состояние «сбой» указанных блоков или, если имя блока не передано, сбросьте состояние всех блоков. Когда модуль каким-либо образом выходит из строя (то есть процесс завершается с ненулевым кодом ошибки, ненормально завершается или завершается по тайм-ауту), он автоматически переходит в состояние «сбой», а его код выхода и статус записываются администратором для самоанализа до тех пор, пока сервис перезапускается или сбрасывается с помощью этой команды.

Похоже, вы удалили его, но не удалили хук systemd:

# systemctl disable [servicename]

Добавление к ответу @ mark-lakata и помнить о внимательности, необходимой для rm команды. [chkconfig] может упростить процесс! ( нажмите здесь, чтобы прочитать о chkconfig )

Чтобы повторить список команд:

  1. systemctl stop [servicename]
  2. chkconfig [servicename] off
  3. systemctl daemon-reload
  4. systemctl reset-failed

Примечание: 1-я команда является необязательной в зависимости от того, хотите ли вы, чтобы служба работала в текущем сеансе или нет (для этого вопроса следует использовать команду).

Вторая команда заботится как об отключении, так и удалении (по символическим ссылкам) службы.

Удаление службы из systemd:

Systemd использует unit (файл для определения сервисов), чтобы удалить сервис, который необходимо удалить. Вот список местоположений юнитов:

Обновить systemd:

Призрачные сервисы (не найдены):

Читайте также:  Как удалить вирусы с папки windows

Systemd может перечислять побочные (не найденные) сервисы, даже если устройство удалено по многим причинам

  1. устройство все еще присутствует в одной из системной директории
  2. устройство не выходит, но ссылка на файл все еще присутствует в одном из каталога systemd
  3. услуга используется в других подразделениях *

(*) если служба упоминается в другом модуле, но не существует, systemd по-прежнему перечисляет эту службу с состоянием not-found, даже если нет файла модуля . вы можете найти, какой модуль использует эту службу, с помощью текстового поиска и отредактируйте эти модули (не рекомендуется, если вы планируете установить эту службу позже)

Источник

Управление сервисами в Linux. Команда systemctl

Что такое сервисы в Linux

Сервисы или службы — это программы, которые работают в системе Linux в фоновом режиме. Обычно они запускаются при загрузке системы. Большинство сервисов необходимы для полноценной работы системы, то есть они являются своего рода кирпичиками, из которых строится работающая система.

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

Чаще всего в Linux дистрибутивах для инициализации сервисов используется демон Systemd. К Systemd-дистрибутивам относятся Ubuntu, Debian, Linux Mint, Fedora, openSUSE, Solus и другие.

Есть дистрибутивы, которые не используют Systemd. Вместо Systemd могут использоваться такие системы инициализации, как Upstart, SysV.

В качестве примеров сервисов можно привести: веб-сервер Apache, Network Manager, файрвол Ufw и другие.

Для управления сервисами (Systemd) используется утилита systemctl . Ниже мы рассмотрим основные команды данной утилиты.

Список сервисов

Чтобы просмотреть список всех сервисов можно воспользоваться командой:

Данная команда пробегает по алфавитному списку всех доступных сервисов и выполняет для них команду status.

В выводе команды используются следующие обозначения:

  • [ + ] — запущенный сервис.
  • [ — ] — остановленный сервис.
  • [ ? ] — для данного сервиса отсутствует команда status.

Запуск сервиса

Для запуска сервиса используется команда systemctl start имя_сервиса

Останов сервиса

Для остановки сервиса используется команда systemctl stop имя_сервиса

Перезапуск сервиса

Перезапуск сервиса выполняется командой systemctl restart имя_сервиса

Обычно перезапуск конкретного сервиса требуется, когда были изменены настройки данного сервиса.

Некоторые сервисы поддерживают «мягкую» перезагрузку. В этом случае сервис считывает связанные с ним файлы конфигурации, но не прерывает процесс сервиса. Для выполнения «мягкой» перезагрузки используется команда systemctl reload имя_сервиса . Не все сервисы поддерживают «мягкую» перезагрузку. Если она не поддерживается, то появится сообщение вида: Failed to reload ufw.service: Job type reload is not applicable for unit ufw.service.

Автозагрузка сервисов

Чтобы сервис стартовал (загружался) при запуске системы, его нужно включить в список автозагрузки. Для этого используется команда systemctl enable имя_сервиса

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

Чтобы удалить сервис из автозагрузки, используется команда systemctl disable имя_сервиса

Статус сервиса

Для вывода информации (статуса) сервиса используется команда systemctl status имя_сервиса

Чтобы проверить, запущен ли в данный момент сервис, используется команда systemctl is-active имя_сервиса

Чтобы проверить, включен ли сервис для автозапуска при загрузке системы, используется команда systemctl is-enabled имя_сервиса

Заключение

Мы рассмотрели наиболее часто используемые команды утилиты systemctl. Полный список команд и опций утилиты systemctl можно получить, выполнив:

Источник

Оцените статью