Урок 5. Службы systemd и журналы
Служба (по-английски service, ещё говорят «демон») — программа, которая работает в фоне без окна: сервер SSH, веб-сервер, база данных, планировщик. Запускает и следит за службами systemd — первая программа, которую запускает ядро (основа системы, которая работает с оборудованием) при загрузке. Управляют им командой systemctl.
Состояние службы
systemctl status sshГлавное в ответе — две строки:
Loaded: … enabled— служба включена в автозагрузку (disabled— не запускается сама при загрузке);Active: active (running)— сейчас работает;inactive (dead)— остановлена;failed— упала с ошибкой.
Ниже — последние строки журнала этой службы. Если ответ не помещается на экран, он открывается для прокрутки: выход — клавиша q.
Запустить, остановить, перезапустить
| Задача | Команда |
|---|---|
| Запустить | sudo systemctl start ssh |
| Остановить | sudo systemctl stop ssh |
| Перезапустить | sudo systemctl restart ssh |
| Перечитать настройки без остановки (если служба умеет) | sudo systemctl reload ssh |
| Включить в автозагрузку | sudo systemctl enable ssh |
| Включить и сразу запустить | sudo systemctl enable --now ssh |
| Убрать из автозагрузки | sudo systemctl disable ssh |
start и stop действуют сейчас, enable и disable — на следующие загрузки. Это разные вещи: остановленная служба после перезагрузки запустится снова, если она enabled.
В Debian служба обычно запускается и включается в автозагрузку сразу после установки пакета: поставили openssh-server — сервер SSH уже работает. Исключения бывают: например, брандмауэр nftables после установки выключен, пока вы сами его не включите.
Какие службы есть
systemctl list-units --type=service
systemctl --failed
systemctl list-unit-files --type=service --state=enabledПервая команда показывает загруженные службы, вторая — упавшие, третья — включённые в автозагрузку.
Журнал: journalctl
Сообщения служб и ядра собирает журнал systemd. Читает его команда journalctl:
| Что показать | Команда |
|---|---|
| Последние записи, с конца | sudo journalctl -e |
Новые записи по мере появления (выход — Ctrl+C) | sudo journalctl -f |
| Записи одной службы | sudo journalctl -u ssh |
| С начала текущей загрузки | sudo journalctl -b |
| С прошлой загрузки (например, после сбоя) | sudo journalctl -b -1 |
| Только ошибки и важнее | sudo journalctl -p err |
| За последний час | sudo journalctl --since "1 hour ago" |
Ключи можно сочетать: sudo journalctl -u ssh -b -p err — ошибки SSH с начала загрузки.
Без sudo обычный пользователь видит только записи своих программ. Чтобы читать весь журнал без sudo, пользователя добавляют в группу systemd-journal или adm:
sudo usermod -aG systemd-journal ivanДействует после нового входа.
Где /var/log/syslog
В инструкциях из интернета часто советуют смотреть /var/log/syslog или /var/log/auth.log. В Debian 12 и новее этих файлов по умолчанию нет: программа rsyslog, которая их писала, больше не ставится. Все сообщения — в журнале systemd, он хранится на диске в /var/log/journal и переживает перезагрузку.
Вместо tail -f /var/log/syslog — sudo journalctl -f, вместо /var/log/auth.log — sudo journalctl -u ssh для входов по SSH. Если какой-то программе нужны именно текстовые файлы, поставьте rsyslog:
sudo apt install rsyslogМесто под журнал
Журнал сам ограничивает свой размер, но на маленьком диске его можно сократить:
sudo journalctl --disk-usage
sudo journalctl --vacuum-size=200MПервая команда показывает, сколько места занято, вторая удаляет старые записи, пока журнал не станет меньше 200 МБ.
Если служба не запускается
systemctl status имя— состояние и последние строки журнала.sudo journalctl -u имя -b— все записи службы с начала загрузки; причина обычно в последних строках.- Проверьте настройки программы её собственной проверкой, если она есть:
sudo sshd -t,sudo nginx -t. - После правки файлов служб в
/etc/systemd/system/—sudo systemctl daemon-reload, иначе systemd их не заметит.
Свои добавки к настройкам службы удобнее делать через sudo systemctl edit имя: команда откроет редактор и сохранит изменения отдельным файлом, который не перезапишется при обновлении пакета.
Настройки ядра в Debian 13
Параметры ядра (например, net.ipv4.ip_forward — пересылка пакетов между сетями) задают файлами в /etc/sysctl.d/. В Debian 13 при загрузке файл /etc/sysctl.conf больше не читается — если вы обновились с Debian 12 и что-то писали туда, перенесите строки в отдельный файл (его ещё нет — nano создаст его при сохранении):
sudo nano /etc/sysctl.d/99-local.conf
sudo sysctl --systemВ файле — строки вида net.ipv4.ip_forward = 1. Вторая команда применяет настройки сразу, без перезагрузки.
Коротко
systemctl status— состояние,start/stop/restart— сейчас,enable/disable— автозагрузка.- В Debian служба обычно запускается сразу после установки пакета.
- Журнал —
journalctl:-u служба,-b,-f,-p err,--since. /var/log/syslogв Debian 12 и новее нет; при необходимости —apt install rsyslog.- В Debian 13 свои настройки ядра — только в
/etc/sysctl.d/*.conf.