Коротко о главном

systemd управляет службами, монтированием, таймерами и журналами. Многие администраторы используют только systemctl, но понимание юнитов и зависимостей позволяет диагностировать запуск и делать собственные сервисы.

Юниты описывают, как запускать приложение, от кого зависит и что делать при сбое. Таймеры заменяют cron с лучшим логированием, а journalctl даёт структурированные логи.

Нужно быстро начать работать с systemd? Вот короткий маршрут: установка, минимальная настройка и проверка результата. Длинную теорию оставим для отдельных материалов.

Установка

В Debian, Ubuntu и Linux Mint используется пакетный менеджер APT:

sudo apt install systemd

В Fedora и RHEL-совместимых системах пакет ставится через DNF:

sudo dnf install systemd

В Arch Linux и производных пакет доступен в официальных репозиториях:

sudo pacman -S systemd

Минимальная настройка

1. Создайте service-юнит

Файл кладите в /etc/systemd/system. Описывайте абсолютные пути и пользователя, от которого работает сервис.

sudo systemctl edit --full --force myapp.service

2. Проверьте синтаксис и запустите

Используйте daemon-reload после изменения юнита. status показывает последние логи и код выхода.

sudo systemctl daemon-reload
sudo systemctl enable --now myapp.service
systemctl status myapp.service

3. Добавьте таймер

Таймер запускает oneshot-сервис по расписанию. Не смешивайте расписание и саму задачу в одном юните.

[Timer]
OnCalendar=daily
Persistent=true

[Install]
WantedBy=timers.target

4. Смотрите журналы

journalctl фильтрует по юниту, времени и приоритету. Для live-режима используйте -f.

journalctl -u myapp.service -n 100 --no-pager
journalctl -u myapp.service -f

Минимальный конфиг

Начните с минимального рабочего варианта. Не копируйте большой конфиг целиком: добавляйте параметры по одному и проверяйте результат после каждого изменения.

[Unit]
Description=My backup job
After=network-online.target

[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup.sh

Шпаргалка по командам

  • Создайте service-юнит: sudo systemctl edit —full —force myapp.service
  • Проверьте синтаксис и запустите: sudo systemctl daemon-reload
  • Добавьте таймер: [Timer]
  • Смотрите журналы: journalctl -u myapp.service -n 100 —no-pager
  • Разберите зависимости: systemctl list-dependencies myapp.service

Практические советы

Эти рекомендации проверены на повседневных задачах. Начните с тех, которые закрывают вашу текущую боль, а не со всего списка сразу.

Совет 1. Не запускайте сервисы от root без необходимости.

Не запускайте сервисы от root без необходимости.

Совет 2. Используйте Restart=on-failure с задержкой.

Используйте Restart=on-failure с задержкой.

Совет 3. Настройте лимиты памяти и файловых дескрипторов.

Настройте лимиты памяти и файловых дескрипторов.

Совет 4. Для длинных задач используйте Type=oneshot и таймер.

Для длинных задач используйте Type=oneshot и таймер.

Что дальше

Быстрый старт не означает «настроить навсегда». Когда базовый сценарий заработает, вернитесь к конфигурации и проверьте, что она переживёт перезагрузку: файлы на месте, служба включена в автозагрузку, путь к данным не зависит от текущего каталога.

Дальше имеет смысл разобраться с резервной копией и журналами systemd. Это не самая заметная часть работы, но именно она превращает эксперимент в инструмент, которым можно пользоваться каждый день.

Чек-лист

  • Команды из шпаргалки выполняются без ошибок после перезагрузки.
  • Пароли и токены не хранятся в истории команд и конфигурации в открытом виде.
  • Понятно, где смотреть логи и что считать признаком проблемы.
  • Есть копия конфигурации, которую можно восстановить.

Короткие ответы на частые вопросы

Нужно ли запускать всё от root?

Нет. Права root нужны для установки пакетов и изменения системных файлов, но сама программа и её данные должны принадлежать отдельному пользователю. Постоянная работа под root превращает любую ошибку в критическую.

Что делать, если после перезагрузки ничего не работает?

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

Как обновлять без сюрпризов?

Читайте примечания к версии, делайте резервную копию конфигурации и проверяйте обновление на тестовом стенде. Не обновляйтесь в пятницу вечером перед выходными: время на откат должно быть частью плана.

Итог

Этого достаточно, чтобы начать. Дальше углубляйтесь по мере задач: документация systemd станет понятнее, когда появится реальный сценарий использования.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Поделиться: Telegram ВКонтакте