Вопрос или проблема
У меня есть собственная служба. Я недавно перенес ее на systemd для RHEL7. Обычно я останавливаю, отключаю и удаляю файл службы. Этого достаточно или мне нужно сделать также
rm /etc/systemd/system/[имя услуги] символические ссылки, которые могут быть связаны
systemctl daemon-reload
systemctl reset-failed
Во-первых, чтобы остановить, отключить и удалить службу, вы должны использовать команды systemctl
, такие как systemctl stop [имя службы]
, systemctl disable [имя службы]
, а затем rm [путь к службе]
. Вы также можете использовать chkconfig
[проверьте здесь] команду, но, как отмечено в одном из моих последних ответов пользователем, это теперь старая команда и может быть недоступна в новых системах!
Во-вторых, выполнение systemctl daemon-reload
после вышеупомянутого – это хорошая практика.
Наконец, выполнение systemctl reset-failed
не является обязательным, если ваша служба не терпела неудачу ранее. Ниже приведена страница man для systemd:
reset-failed [PATTERN…]
Сбросить состояние “неудачи” указанных единиц, или если название единицы не передано, сбросить состояние всех единиц. Когда единица терпит неудачу каким-то образом (т.е. процесс завершился с ненулевым кодом ошибки, завершился ненормально или истек срок), она автоматически войдет в состояние “неудачи”, и ее код выхода и статус будут записаны для проверки администратором, пока служба не будет перезапущена или сброшена с помощью этой команды.
Ответ или решение
Удаление пользовательского сервиса в системе, использующей systemd, требует четкого и последовательного подхода. После того как вы остановили и отключили сервис, а также удалили файл службы, остаётся вопрос необходимости выполнения дополнительных команд, таких как daemon-reload
и reset-failed
.
Остановка и отключение сервиса
Необходимо начать с остановки и отключения сервиса. Вы можете использовать следующие команды:
systemctl stop [servicename]
systemctl disable [servicename]
Эти команды остановят выполнение сервиса и предотвратят его автоматический запуск при загрузке системы.
Удаление файла службы
Следующим шагом является удаление файла службы. Это можно сделать с помощью команды rm
. Например:
rm /etc/systemd/system/[servicename].service
Необходимость выполнения daemon-reload
После удаления файла службы очень важно выполнить команду systemctl daemon-reload
. Эта команда обновляет систему для учета любых изменений, связанных с юнитами systemd. Если вы не выполните эту команду, systemd может продолжать считать, что служба всё ещё существует, что может привести к путанице и возможным ошибкам. В данном случае, выполнение команды:
systemctl daemon-reload
— это хорошая практика для обеспечения корректного состояния вашей системы.
Использование reset-failed
Команда systemctl reset-failed
служит для сброса состояния "неудачи" у юнитов. Это состояние устанавливается, когда служба завершается с ошибкой или неожиданно останавливается, например, из-за сбоя в работе. Если у вашего сервиса не было предыдущих сбоев, вы можете не выполнять эту команду. Тем не менее, если вы хотите убедиться, что все записи об ошибках были устранены, выполнение:
systemctl reset-failed
может быть целесообразным.
Заключение
В резюме, после остановки, отключения и удаления сервиса, обязательно выполните systemctl daemon-reload
для синхронизации состояния systemd с текущими файлами конфигураций. Использование systemctl reset-failed
является опциональным и зависит от наличия сообщений об ошибках, связанных с вашим сервисом. Правильное удаление служб и механизмов управления ими поможет поддерживать сервер в рабочем состоянии и упрощает администрирование системы.
Таким образом, следование описанным шагам гарантирует, что вы эффективно управляете службами в вашей системе RHEL7, используя systemd.