PQ
PQ.Hosting

Валюта

Как перезапустить службу в Linux: systemctl restart, reload и диагностика

Автор
PQ
13 марта 2026
3 мин чтения
515 просмотров
Как перезапустить службу в Linux: systemctl restart, reload и диагностика

Изменили конфиг Nginx — надо применить. Служба mysql ведёт себя странно — надо дёрнуть. Обновили php-fpm — надо перезагрузить. В каждом из этих случаев правильная команда разная. restart это не всегда то что нужно.

restart vs reload: в чём разница

Две команды которые часто путают:

restart — полная остановка процесса и запуск заново. Все текущие соединения обрываются. Конфиг перечитывается. Занимает секунды.

reload — служба остаётся запущенной, только перечитывает конфигурационный файл. Соединения не обрываются. Подходит для Nginx, Apache, sshd — там где обрыв соединений нежелателен.

Не все службы поддерживают reload — если команда вернёт ошибку, использовать restart.

Основные команды systemctl

Перезапустить службу:

sudo systemctl restart nginx

Перечитать конфиг без остановки:

sudo systemctl reload nginx

Перечитать конфиг или перезапустить если reload не поддерживается:

sudo systemctl reload-or-restart nginx

Остановить:

sudo systemctl stop nginx

Запустить:

sudo systemctl start nginx

Проверить статус:

sudo systemctl status nginx

Что показывает systemctl status

После перезапуска всегда проверять статус — убедиться что служба поднялась:

systemctl status nginx

Строка Active: active (running) — служба работает. failed — что-то пошло не так, смотреть логи.

Если служба не поднялась: читаем логи

Служба упала после перезапуска — смотреть подробности:

journalctl -u nginx -n 50 --no-pager

Логи в реальном времени — удобно при отладке конфига:

journalctl -u nginx -f

Только ошибки за текущую загрузку:

journalctl -u nginx -p err -b

В выводе будет конкретная строка с ошибкой — синтаксис конфига, занятый порт, отсутствующий файл.

Проверить конфиг перед перезапуском

Для Nginx и Apache есть встроенная проверка синтаксиса. Запускать до restart — иначе служба упадёт и не поднимется:

sudo nginx -t
sudo apache2ctl configtest

Если вывод syntax is ok — можно перезапускать.

Автозапуск: включить и выключить

Посмотреть включён ли автозапуск:

systemctl is-enabled nginx

Включить автозапуск при загрузке системы:

sudo systemctl enable nginx

Включить и сразу запустить:

sudo systemctl enable --now nginx

Выключить автозапуск:

sudo systemctl disable nginx

Перезапустить несколько служб сразу

Через пробел:

sudo systemctl restart nginx php8.1-fpm mysql

Перезапуск через service: старый способ

На старых системах (Ubuntu 16.04, CentOS 6) или в скриптах которые должны работать везде:

sudo service nginx restart

service на современных системах просто вызывает systemctl — результат одинаковый. Но systemctl даёт больше информации в статусе.

Имена служб в разных дистрибутивах

Одна и та же программа может называться по-разному:

Программа Debian/Ubuntu RHEL/CentOS
Веб-сервер Apache apache2 httpd
MySQL mysql mysqld
PHP-FPM 8.1 php8.1-fpm php-fpm
SSH-сервер ssh sshd
Firewall ufw firewalld

Найти точное имя службы если не знаете:

systemctl list-units --type=service | grep -i nginx

Шпаргалка

Задача Команда
Перезапустить sudo systemctl restart имя
Перечитать конфиг (без обрыва) sudo systemctl reload имя
Reload или restart sudo systemctl reload-or-restart имя
Остановить sudo systemctl stop имя
Запустить sudo systemctl start имя
Статус systemctl status имя
Логи службы journalctl -u имя -n 50
Логи в реальном времени journalctl -u имя -f
Включить автозапуск sudo systemctl enable имя
Выключить автозапуск sudo systemctl disable имя
Включить и запустить sudo systemctl enable --now имя
Найти имя службы systemctl list-units --type=service | grep -i имя

Поделиться статьей

Похожие статьи