Systemd — управление службами

Systemd — современный менеджер служб и процессов в Linux. Эта шпаргалка содержит все команды для управления системными службами, юнитами и мониторинга через journalctl.

ОСНОВНЫЕ КОМАНДЫ SYSTEMCTL

Управление службами:

Команда Описание Пример
systemctl start service Запустить службу systemctl start nginx
systemctl stop service Остановить службу systemctl stop apache2
systemctl restart service Перезапустить службу systemctl restart ssh
systemctl reload service Перезагрузить конфиг systemctl reload nginx
systemctl status service Статус службы systemctl status mysql
systemctl enable service Включить автозагрузку systemctl enable docker
systemctl disable service Выключить автозагрузку systemctl disable postfix
systemctl is-enabled service Проверить автозагрузку systemctl is-enabled cron
systemctl is-active service Проверить активность systemctl is-active network
systemctl mask service Заблокировать службу systemctl mask telnet.socket
systemctl unmask service Разблокировать службу systemctl unmask getty@tty1

Системные команды:

Команда Описание
systemctl reboot Перезагрузка системы
systemctl poweroff Выключение
systemctl halt Остановка системы
systemctl suspend Режим сна
systemctl hibernate Гибернация
systemctl rescue Режим восстановления
systemctl emergency Аварийный режим

ТИПЫ ЮНИТОВ (UNIT TYPES)

Тип Расширение Описание Пример
Служба .service Системные службы nginx.service
Сокет .socket Сетевые сокеты ssh.socket
Устройство .device Аппаратные устройства dev-sda.device
Монтирование .mount Точки монтирования home.mount
Автомонт .automount Автоматическое монтирование mnt.automount
Цель .target Группа юнитов multi-user.target
Таймер .timer Запланированные задачи daily.timer
Путь .path Активация по изменению файлов etc.path

ПРОСМОТР ИНФОРМАЦИИ О ЮНИТАХ

Команда Описание
systemctl list-units Показать все загруженные юниты
systemctl list-units --all Показать все юниты (включая неактивные)
systemctl list-units --type=service Только службы
systemctl list-units --type=socket Только сокеты
systemctl list-unit-files Показать все файлы юнитов
systemctl list-dependencies unit Показать зависимости юнита
systemctl show unit Показать все свойства юнита
systemctl cat unit Показать содержимое файла юнита
systemctl edit unit Редактировать юнит (создает overlay)
systemctl daemon-reload Перезагрузить конфигурацию systemd

ЦЕЛИ (TARGETS) — АНАЛОГ УРОВНЕЙ ЗАГРУЗКИ

Цель Описание Аналог runlevel
poweroff.target Выключение 0
rescue.target Однопользовательский режим 1
multi-user.target Многопользовательский без GUI 3
graphical.target Многопользовательский с GUI 5
reboot.target Перезагрузка 6
emergency.target Аварийная оболочка —

Команды для работы с целями:

systemctl get-default # Текущая цель по умолчанию
systemctl set-default graphical.target # Установить цель по умолчанию
systemctl isolate multi-user.target # Переключиться на цель
systemctl list-dependencies multi-user.target # Зависимости цели

 

ТАЙМЕРЫ (TIMERS) — АНАЛОГ CRON

Команда Описание
systemctl list-timers Показать все таймеры
systemctl list-timers --all Все таймеры (включая неактивные)
systemctl start timer Запустить таймер
systemctl stop timer Остановить таймер

Пример таймера (/etc/systemd/system/backup.timer):

[Unit]
Description=Daily backup

[Timer]
OnCalendar=daily
Persistent=true

[Install]
WantedBy=timers.target

СОЗДАНИЕ ПРОСТОЙ СЛУЖБЫ

Файл: /etc/systemd/system/myapp.service

 

[Unit]
Description=My Application
After=network.target

[Service]
Type=simple
User=appuser
ExecStart=/usr/bin/python3 /opt/myapp/app.py
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

Команды после создания:

sudo systemctl daemon-reload
sudo systemctl start myapp
sudo systemctl enable myapp
sudo systemctl status myapp

КОМАНДЫ JOURNALCTL (ПРОСМОТР ЛОГОВ)

Команда Описание
journalctl Показать все логи
journalctl -u service Логи конкретной службы
journalctl -f Следить за логами в реальном времени (tail -f)
journalctl -k Показать только логи ядра
journalctl -b Логи текущей загрузки
journalctl -b -1 Логи предыдущей загрузки
journalctl --since "2024-01-15" Логи с даты
journalctl --until "yesterday" Логи до даты
journalctl -p err Только ошибки
journalctl --disk-usage Размер логов на диске
journalctl --vacuum-size=100M Очистить логи, оставить 100МБ
journalctl --vacuum-time=1months Удалить логи старше 1 месяца
journalctl -o json Вывод в формате JSON
journalctl -o json-pretty Читаемый JSON
journalctl _PID=1234 Логи по PID процесса

ОПЦИИ СЛУЖБ (SERVICE OPTIONS)

Секция [Service] в .service файлах:

Опция Значения Описание
Type simple, forking, oneshot, dbus, notify, idle Тип службы
User username Пользователь для запуска
Group groupname Группа для запуска
ExecStart команда Команда запуска
ExecStop команда Команда остановки
ExecReload команда Команда перезагрузки
Restart no, on-success, on-failure, always Политика перезапуска
RestartSec секунды Пауза перед перезапуском
Environment VAR=value Переменные окружения
WorkingDirectory /путь Рабочая директория
LimitNOFILE число Лимит открытых файлов
Nice -20..19 Приоритет (nice)

БЫСТРЫЕ КОМАНДЫ ДЛЯ ПОВСЕДНЕВНОГО ИСПОЛЬЗОВАНИЯ

# Мониторинг состояния системы
systemctl list-units —failed # Показать упавшие службы
systemctl —failed # Кратко: упавшие службы

# Поиск проблем
journalctl -p 0..3 -xb # Критические сообщения (0=emerg, 3=err)
journalctl —since «10 min ago» # Что произошло за последние 10 минут

# Создание временной службы для скрипта
echo ‘[Service]
Type=oneshot
ExecStart=/path/to/script.sh’ | sudo tee /etc/systemd/system/temp.service
sudo systemctl start temp.service

# Проверка конфигурации перед применением
sudo systemctl daemon-reload —dry-run
sudo systemctl edit —full —force service.service # Редактировать с проверкой

 

Дата последнего обновления: 12/05/2025.