7.9. Ручная остановка и запуск служб
Проблема
Требуется запустить, остановить или перезапустить службу, но вам не хотелось бы делать эти изменения постоянными. Возможно, произошёл сбой в работе сети, или «умер» веб-сервер, или вы изменили конфигурационный файл службы и хотите перезапустить её, чтобы изменения вступили в силу. А может быть, вы тестируете новую службу и хотите запускать её только тогда, когда это необходимо.
Решение
Запустите стартовый сценарий программы в каталоге /etc/init.d
с соответствующими параметрами. Для начала найдите нужный сценарий, прочитайте его и изучите состав поддерживаемых параметров. Например, часто требуется перезапустить сетевую поддержку. В файле /etc/init.d/networking
может быть указана следующая команда:
echo "Usage: /etc/init.d/networking {start|stop|restart|force-reload}"
Подобная строка содержится в каждом сценарии init
. Нужную информацию также можно получить, запустив сценарий без аргументов:
# /etc/init.d/networking
Usage: /etc/init.d/networking {start|stop|restart|force-reload}
Таким образом, для остановки службы сети используется следующая команда:
# /etc/init.d/networking stop
Аналогично, для запуска или перезагрузки службы используйте команды start и restart.
Комментарий
Для любой программы, которая имеет стартовый сценарий в /etc/init.d
, рекомендуется использовать именно этот сценарий, а не запускать сам двоичный файл программы. Это связано с тем, что сценарий включает обработку ошибок, проверку файлов конфигурации и все необходимые условные проверки, что делает его более надёжным способом управления службами.
В некоторых дистрибутивах Linux может использоваться система systemd
, которая заменила init
. В этом случае для управления службами применяются команды systemctl
. Пример команды для перезапуска службы в systemd
:
# systemctl restart networking.service
Преимущество systemd
заключается в его более гибком и мощном управлении службами. Если вы используете эту систему, рекомендуется изучить её команды и возможности.
См. также
Подробнее о сценариях и управлении службами можно узнать в документации по init
или systemd
. Дополнительная информация доступна на официальных ман-страницах.