Как удалить службу linux

Как отключить ненужные службы в Linux

Когда мы настраиваем сервер, необходимо спросить себя, что нам действительно необходимо. Нужен ли нам веб-сервер или FTP-сервер, NFS-сервер или DNS-сервер, сервер базы данных или что-то другое.
В этой статье мы поговорим о некоторых ненужных приложениях и службах, которые могут быть вам без надобности, но устанавливаются по умолчанию при инсталляции системы и незаметно потребляют ваши системные ресурсы.

Сначала давайте посмотрим, какие службы работают в системе:

Теперь посмотрим на процессы, которые подключаются к портам, это можно сделать с помощью команды netstat:

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

1. smbd и nmbd

smbd и nmbd — это демон Samba Process. Действительно ли вам нужно предоставлять общий доступ к ресурсам для машин, работающих под windows? Если нет, почему эти процессы работают? Вы можете их безопасно завершить и убрать из автозагрузки.

2. Telnet

Нужна ли вам связь по протоколу Telnet (bidirectional interactive text-oriented communication) в интернете или в локальной сети? Если нет, завершайте этот процесс и исключайте его из автозагрузки.

3. rlogin

Требуется вам авторизация на удаленной машине по сети? Если нет, завершаем этот процесс и убираем из автозагрузки.

4. rexec

Remote Process Execution или rexec позволяет вам выполнять команды оболочки на удаленном компьютере. Если вам это не нужно, просто завершите процесс.

5. FTP

Вы передаете файлы через интернет? Если нет, эту службу спокойно можно отключить.

6. automount

Вам нужно автоматически монтировать различные файловые системы, чтобы подключить сетевую файловую систему? Если нет, почему этот процесс работает? Завершите процесс и уберите его из автозагрузки.

7. named

Вам нужен запущенный DNS-сервер? Тогда что мешает вам освободить занимаемые им системные ресурсы. Завершите процесс и уберите его из автозагрузки.

8. lpd

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

9. Inetd

Используете ли вы какие-нибудь службы inetd? Если вы запускаете отдельное приложение, такое как ssh, которое в свою очередь использует другое отдельное приложение, например Mysql, Apache и так далее, то вам не нужен inetd. Лучше отключить его автоматическую загрузку.

10. portmap

Portmap — это Open Network Computing Remote Procedure Call (ONC RPC), использующий демоны rpc.portmap и rpcbind. Если у вас работают эти процессы, значит запущен NFS-сервер. В противном случае ваши системные ресурсы расходуются напрасно.

Как завершить процесс в Linux

Для того, чтобы завершить работающий процесс в Linux, используется команда «Kill PID». Но сначала нам необходимо узнать PID процесса. Например, я хочу узнать PID процесса «cupsd»:

Итак, PID процесса cupsd 1511. Для того, чтобы завершить этот процесс, используем команду:

Как отключать службы в Linux

В дистрибутивах на базе Red Hat, таких как Fedora и CentOS для отключения и включения служб используется скрипт «chkconfig».
Например, давайте отключим автозагрузку сервера Apache:

Читайте также:  Hasp license managers windows x64

В дистрибутивах на базе Debian, таких как Ubuntu, Linux Mint, для этой цели используется скрипт update-rc.d.
Например, для отключения автозагрузки сервера Apache используется следующая команда:

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

Источник

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

Если я устанавливаю новый сервис, затем решаю, что больше не хочу это приложение, и удаляю его, сервис все равно будет указан в выводе 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:

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

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

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

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

Источник

Systemctl-управление службами в Linux

Введение

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

В данном руководстве мы рассмотрим наиболее важные команды, необходимые для управления сервером с поддержкой systemd. Они должны работать на версиях систем Ubuntu 15.04, Debian 8, CentOS 7, Fedora 15 и выше.

Основы управления сервисами (юнитами)

Базовый объект, с которым работает systemd, называется “юнитом” (unit). Есть много видов юнитов, но самым распространенным является служба (service, файл юнита заканчивается на .service). Основным инструментом для управления службами на сервере является команда systemctl.

У всех команд обычной системы инициализации есть эквиваленты в systemctl. В примерах мы будем использовать службу nginx.service. Если у вас её нет, установите ее при помощи менеджера пакетов.

Читайте также:  Windows script host 800a802d

Для запуска службы нужно ввести:

Остановка осуществляется следующей командой:

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

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

По умолчанию большинство файлов юнитов systemd не запускаются при загрузке автоматически. Для настройки этой функции требуется “включить” юнит. Он привязывается к “цели” загрузки и запускается, когда выполняется это целевое действие.

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

Если нужно снова отключить службу:

Получение данных о состоянии системы

Мы можем получить от сервера с systemd огромное количество информации, чтобы узнать о состоянии системы.

Например, чтобы получить список юнитов, которые systemd считает активными, нужно выполнить следующую команду (можно даже не использовать опцию list-units, потому что она подразумевается по умолчанию):

Для вывода списка юнитов, которые systemd загружал или пытался загрузить в память, в том числе не активные в данный момент, нужно указать опцию —all:

sudo systemctl list-units —all

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

sudo systemctl list-unit-files

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

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

Файлы юнитов и зависимости

Файл юнита содержит параметры, используемые systemd для запуска и управления. Для просмотра полного содержимого файла юнита нужно выполнить команду:

Для просмотра дерева зависимостей юнита (другие юниты, активируемые systemd при запуске юнита), выполните команду:

Вывод списка зависимых юнитов, которые будут рекурсивно раскрыты. Для полного рекурсивного раскрытия всех зависимых юнитов (второй и большие уровни зависимости), воспользуйтесь опцией —all:

Для просмотра низкоуровневых данных о настройках юнита в системе используется опция show. В этом случае выводится значение каждого параметра, управляемого systemd:

Изменение файлов юнитов

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

Для создания сниппета файла юнита (блок, который может использоваться для дополнения или замены параметров файла юнита по умолчанию) нужно воспользоваться опцией edit:

Если нужно изменить все содержимое файла, а не создавать сниппет, воспользуйтесь флагом —full:

После изменения файла юнита нужно перезагрузить сам процесс systemd для принятия изменений:

Использование целей

Одна из функций системы инициализации — перевод сервера в различные состояния. Обычно они называются уровнями запуска или уровнями выполнения. В заданный момент времени система может находиться только на одном уровне выполнения. В таблице предоставлены доступные уровни запуска

Цель Уровень
poweroff.target 0
rescue.target 1
multi-user.target 2
multi-user.target 3
multi-user.target 4
graphical.target 5
reboot.target 6

В systemd вместо этого применяются цели. Цель — это точка синхронизации, которой сервер может воспользоваться для перехода в определенное состояние. К цели можно привязать службы и другие юниты, одновременно может быть активно несколько целей. Для просмотра полного списка целей в системе нужно выполнить команду:

Для просмотра цели по умолчанию, которой systemd стремится достичь при загрузке (которая, в свою очередь, запускает все файлы юнитов, составляющие дерево зависимости этой цели), выполните команду:

multi-user.target соответствует третьему уровню запуска, проверить это можно командой

При помощи опции set-default изменить цель по умолчанию, которая будет использоваться при загрузке:

Читайте также:  Elitebook 820 windows 10

Для просмотра привязанных к цели юнитов можно выполнить следующую команду:

Изменять состояние системы для перехода между можно при помощи isolate (изолировать). Она останавливает все юниты, не привязанные к указанной цели. Убедитесь что изолируемая вами цель не останавливает важные службы. Например команда

Перезагрузит вашу систему.

Выключение и перезагрузка сервера

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

Загрузка в режиме восстановления:

В большинстве операционных систем для этих операций есть стандартные алиасы, так что можно просто ввести

без systemctl, но их может и не быть.

Заключение

Мы рассмотрели основы управления юнитами и службами при помощи команды systemctl, а также познакомились с концепцией целей. Для более подробной информации можно обратиться к соответствующим man-страницам

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

Управление сервисами в 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 можно получить, выполнив:

Источник

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