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. Дополнительная информация доступна на официальных ман-страницах.