TGViewer
CORTEL CORTEL @cortel_cloud · 4.07K subscribers
Post #2707 1.16K
📄 systemd unit: структура файлов и секции

➡️ Ранее рассматривали основные типы юнитов.

🔵А как устроены сами unit-файлы?

Unit-файлы — это простые текстовые файлы в формате, напоминающем ini.

Они хранятся в каталогах:
— /etc/systemd/system/ — для пользовательских/локальных юнитов (приоритет выше остальных)
— /lib/systemd/system/ — юниты, установленные пакетами
— /run/systemd/system/ — динамически созданные юниты (например, при монтировании)

🔵 Общая структура

Каждый unit-файл состоит из секций.
Имя секции заключается в квадратные скобки.
Внутри секции — директивы вида Ключ=Значение. Комментарии начинаются с #.

➡️ Основные секции:
— [Unit] — присутствует во всех юнитах. Содержит описание, зависимости, порядок загрузки.
— [Service] — только для .service юнитов. Определяет, как запускать, контролировать и останавливать процесс.
— [Install] — используется командой systemctl enable. Указывает, в какие таргеты включать юнит.
— Другие специфические секции: [Socket], [Timer], [Mount], [Path] и т.д.

🔵 Остановимся на самой важной — [Unit].

➡️ Основные директивы:

— Description — понятное имя юнита (отображается в systemctl status).
— Documentation — список URI с документацией (можно указать несколько через пробел).
— After, Before — управление порядком запуска. Например, After=network.target означает, что этот юнит должен запускаться после network.target (но не гарантирует, что сеть готова).
— Requires — жёсткая зависимость: если указанный юнит не запустится, этот тоже не запустится (или будет остановлен).
— Wants — мягкая зависимость: если указанный юнит не запустится, это не помешает запуску текущего.
— Conflicts — если указанный юнит запущен, текущий будет остановлен (и наоборот).
— Condition... и Assert... — проверки перед запуском (например, ConditionPathExists=/etc/myapp.conf).

✅ Пример unit-файла


[Unit]
Description=Python Application
Documentation=https://python.appdocs.ru/myapp
After=network.target
Wants=network-online.target
ConditionPathExists=/opt/myapp/app.py

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

[Install]
WantedBy=multi-user.target


➡️ Где:

— Description — что это за сервис.
— Documentation — где искать информацию.
— After=network.target — старт после базовой сети.
— Wants=network-online.target — желательно дождаться полной готовности сети (но не критично).
— ConditionPathExists — проверяет наличие файла перед запуском.
— Далее идут секции [Service] (параметры запуска) и [Install] (автозагрузка).

Понимание секции [Unit] даёт контроль над тем, когда и при каких условиях запускается ваш сервис. Остальные секции ([Service], [Timer], [Socket] и т.д.) описывают уже конкретную логику работы юнита.

#линуксятина
  • 🔥 9
  • 👍 3
  • 👏 2
More from @cortel_cloud
  1. Oct 1, 2026🖥 sed — потоковый редактор текста в Linux 🤓 Появился в Bell Labs в 1970-х и до сих пор и…
  2. Sep 29, 2026🖥 РАЗНИЦА Block, File и Object Storage 🧑‍🎓Повторение — мать учения. Для разных задач по…
  3. Sep 25, 2026😎 Когнитивная РАЗгрузка За неделю с горящими дедлайнами, часовыми ВКС и постоянным перекл…
  4. Sep 23, 2026💻 kubectl diff: обработка изменений в CI/CD kubectl diff сравнивает текущую конфигурацию…
  5. Sep 18, 2026🛡 ДА! У НАС ЦЕЛАЯ ЧЕРЕДА ПОЛЕЗНЫХ ЭФИРОВ ПРО ИБ! 🎙 Уже 24 сентября Вероника Нечаева, выс…
  6. Sep 16, 2026👩‍💻 Работа с ПДн это непрерывный процесс. Компания меняется — появляются новые сервисы,…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →