Управление службами: systemctl
Управление службами Linux с systemctl: start, stop, restart, status, enable, disable — как работать с systemd и автозапуском сервисов.
systemd — система инициализации, которая управляет службами (сервисами) в большинстве современных дистрибутивов Linux. Основной инструмент взаимодействия с ней — команда
systemctl.
Основные операции со службами
Команда | Действие |
| запустить службу |
| остановить службу |
| перезапустить (стоп + старт) |
| перечитать конфиг без остановки |
| состояние и последние логи |
# Запустить nginx
sudo systemctl start nginx
# Проверить статус
sudo systemctl status nginx
Вывод:
● nginx.service - A high performance web server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled)
Active: active (running) since Fri 2024-06-10 12:00:00 UTC; 5min ago
Process: 789 ExecStart=/usr/sbin/nginx -g daemon on; (code=exited, status=0/SUCCESS)
Main PID: 790 (nginx)
Jun 10 12:00:00 server nginx[789]: nginx: configuration file /etc/nginx/nginx.conf test is OK
Строка Active: active (running) означает, что служба работает. failed — упала с ошибкой.
Автозапуск при загрузке: enable / disable
# Включить автозапуск nginx при старте системы
sudo systemctl enable nginx
# Отключить автозапуск
sudo systemctl disable nginx
# Включить И сразу запустить
sudo systemctl enable --now nginx
# Проверить, включён ли автозапуск
systemctl is-enabled nginx
Вывод is-enabled:
enabled
Просмотр всех служб
# Все запущенные юниты
systemctl list-units --type=service --state=running
# Все службы (включая неактивные)
systemctl list-units --type=service
# Службы с ошибками
systemctl --failed
Вывод list-units (фрагмент):
UNIT LOAD ACTIVE SUB DESCRIPTION nginx.service loaded active running A high performance web server ssh.service loaded active running OpenBSD Secure Shell server cron.service loaded active running Regular background program processing
Просмотр логов: journalctl
journalctl — инструмент для чтения логов systemd.
# Логи конкретной службы
sudo journalctl -u nginx
# Последние 50 строк + следить в реальном времени
sudo journalctl -u nginx -n 50 -f
# Логи с момента последней загрузки
sudo journalctl -b -u nginx
Флаг
-fработает какtail -f— выводит новые строки по мере их появления. Удобно при отладке.
Частые ошибки
- Служба запускается, но не включена — после перезагрузки она не стартует. Используйте
enable --now. - reload вместо restart —
reloadработает только если служба поддерживает перечитывание конфига «на лету»; для nginx это работает, для многих других — нет. - Ошибка «Unit not found» — проверьте точное имя:
nginx.serviceили простоnginx.
Коротко
systemctl start/stop/restart/status имя— базовые операции со службой.systemctl enable --now имя— включить автозапуск и сразу запустить.systemctl list-units --type=service— список всех служб.journalctl -u имя -f— следить за логами службы в реальном времени.
Проверьте себя
1. Какая команда запустит nginx И включит его автозапуск при загрузке?
Asudo systemctl start nginx
Bsudo systemctl enable nginx
Csudo systemctl enable --now nginx
Dsudo systemctl restart nginx
2. Чем reload отличается от restart для служб systemd?
AНичем, они одинаковы
Breload перечитывает конфиг без остановки процесса, restart — останавливает и запускает заново
Creload работает быстрее, но теряет данные
Drestart требует пароля, reload — нет
3. Какой командой смотреть логи службы nginx в реальном времени?
Asystemctl logs nginx -f
Bjournalctl -u nginx -f
Ctail -f /var/log/nginx
Dsystemctl status nginx --follow