Ликбез

Службы Linux: systemctl и journalctl

Всё интересное на сервере — веб, базы, SSH, мониторинг — живёт службами. Ими управляет systemd, и два его инструмента, systemctl и journalctl, — хлеб админа. Разберём управление и главный сценарий: «служба не стартует».

Базовое управление

systemctl status nginx     # жива ли, давно ли, последние строки журнала
sudo systemctl start nginx    # запустить
sudo systemctl stop nginx     # остановить
sudo systemctl restart nginx  # перезапустить (обрывает соединения)
sudo systemctl reload nginx   # перечитать конфиг без обрыва, если служба умеет
systemctl list-units --type=service --state=running  # что сейчас работает

Автозагрузка — отдельно от запуска

Грабли, на которые наступает каждый новичок: start запускает службу сейчас, но после перезагрузки сервера она не поднимется. За «вставать при загрузке» отвечает enable, и это независимые вещи:

sudo systemctl enable nginx       # подниматься при загрузке
sudo systemctl enable --now nginx # и в автозагрузку, и запустить сразу
systemctl is-enabled nginx        # проверить: enabled / disabled
sudo systemctl disable barsuk     # убрать лишнее из автозагрузки

Симптом «после перезагрузки сервера всё лежит, пока не зайдёшь и не запустишь руками» — это ровно забытый enable.

Журналы: journalctl

journalctl -u nginx -e        # журнал службы, сразу в конец
journalctl -u nginx -f        # смотреть вживую (как tail -f)
journalctl -u nginx --since "10 min ago"  # за последние 10 минут
journalctl -p err -b          # все ошибки с момента загрузки

Сценарий «служба не стартует»

  1. systemctl status — смотри строку с ошибкой и код выхода: часто причина написана прямо там.
  2. journalctl -u имя -e — полный журнал, а не три строки статуса. Читай последнюю попытку запуска снизу вверх.
  3. Проверь конфиг штатной проверкой, если она есть: nginx -t, sshd -t, testparm для Samba. Синтаксическая ошибка в конфиге — причина номер один.
  4. Занят порт? ss -tulpn покажет, кто уже слушает нужный порт: вторая по частоте причина.
  5. Права. Служба работает от своего пользователя, и если ему не читается сертификат или каталог — не стартует. Разбор механики — в статье про права доступа.

Этот порядок — готовый ответ на вопрос собеседования «служба не поднимается, твои действия?», один из обязательных в типовом наборе. Рука ставится на стенде: сломай конфиг nginx нарочно и почини по журналам. На курсе Linux таких упражнений десятки — служба за службой, с проверкой преподавателем.

{ Научиться чинить службы на курсе }

Частые вопросы

Чем restart отличается от reload и что когда жать?

Restart гасит и поднимает службу заново, обрывая её работу; reload просит перечитать конфигурацию на лету. Правило: поменял конфиг — пробуй reload; служба зависла — restart.

Служба «активна», а не работает. Как так?

Active означает «процесс жив», а не «делает своё дело»: зависшая служба может числиться активной. Проверяй работу по существу — отвечает ли порт, пишется ли журнал — и навешивай мониторинг, который проверяет именно суть.

Как добавить свой скрипт в автозагрузку?

Написать простой unit-файл в /etc/systemd/system: секции Unit, Service с ExecStart и Install. Дальше daemon-reload и enable — и твой bash-скрипт становится полноценной службой с журналом.

Куда дальше