ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Как удалить файл Systemd Service

Как удалить файл Systemd Service

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

Для удаления служебных файлов крайне важно понимать набор каталогов, содержащих служебные файлы.

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

/lib/systemd/system Служебные файлы из загруженных пакетов
/etc/systemd/system Служебные файлы, созданные системным администратором
~/.config/systemd/users Служебные файлы обычными пользователями

 

Итак, если загружен пакет, предоставляющий демона и службы, то эти файлы будут сохранены в каталоге /lib/systemd/system . Каталог /etc/systemd/system содержит служебные файлы, созданные системными администраторами, и изменять их могут только пользователи sudo. В то время как каталог ~/.config/systemd/users содержит служебные файлы, созданные обычными пользователями.

 

Как получить доступ к служебному файлу

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

systemctl status [SERVICE-NAME]

 

Чтобы найти название службы, вы можете перечислить все запущенные службы.

systemctl list-unit-files --type=service --state=running
Если вы хотите составить список всех служб, используйте команду systemctl с опциями –type и –state.
список systemctl-unit-files

Например, чтобы найти путь к модулю myservice.service, мы выполним команду status.

systemctl list-unit-files

Вывод показывает путь к файлу модуля в разделе “Loaded“.

Теперь, когда мы получили путь к сервису, мы приступим к его удалению на следующем шаге.

 

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

 

Как удалить служебный файл

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

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

sudo systemctl stop SERVICE-NAME
sudo systemctl disable SERVICE-NAME
sudo rm /lib/systemd/system/SERVICE-NAME #Service from the downloaded package
sudo rm /etc/systemd/system/SERVICE-NAME #Service by the administrator
sudo rm ~/.config/systemd/users/SERVICE-NAME #Service by the normal user
sudo systemctl daemon-reload
sudo systemctl reset-failed

 

Во-первых, рекомендуется остановить службу, чтобы убедиться, что она не запущена во время удаления, хотя ее отключение также предотвратит повторный запуск. Затем его необходимо отключить, что предотвращает автоматический запуск службы; при отключении службы также удаляются символические ссылки, созданные в каталогах .wants/ или .requires/. После этого удалите служебные файлы с помощью команды rm из соответствующего каталога.

Перезагрузите конфигурации systemd с помощью daemon-reload и команды execute reset-failed. Команда reset-failed сбрасывает все службы в состояние failed.

 

Пример

В этом примере давайте удалим службу, созданную системным администратором. Служба называется myservice.service и находится в каталоге /etc/systemd/system.

Проверьте состояние службы.

systemctl status myservice.service

 

Как удалить файл Systemd Service


 

Служба запущена; укажите путь к разделу “Loaded” и disable службу.

sudo systemctl disable myservice.service

 

sam@sam: $ sudo systemctl disable myservice.service
Removed /etc/systend/system/multi-user.target.wants/myservice.service.

 

Это также приведет к удалению символической ссылки изкаталога /etc/systemd/system.

Затем удалите служебный файл, используя команду rm и путь к служебному файлу.

sudo rm /etc/systemd/system/myservice.service

 

Теперь перезагрузите конфигурацию systemd, чтобы применить изменения.

systemctl daemon-reload

 

Вот и все! Служба удалена и ее больше нет в вашей системе. Проверьте это, проверив состояние службы.

sam@sam: $ systemctl status myservice.service 

Unit myservice.service could not be found.

 

Заключение

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

Exit mobile version