[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-linux-kak-rabotaet-systemd-osnovnye-komandy-systemctl-i-unit-fayly":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":15,"progress":16,"seo":17},737,"kak-rabotaet-systemd-osnovnye-komandy-systemctl-i-unit-fayly",18,"linux","Linux","🐧","Как работает systemd? Основные команды systemctl и unit-файлы.","systemd — система инициализации и управления сервисами в Ubuntu 24.04. Основной инструмент управления — `systemctl`.\n\n### Основные команды systemctl\n\n```bash\n# Управление сервисами\nsudo systemctl start nginx       # Запустить\nsudo systemctl stop nginx        # Остановить\nsudo systemctl restart nginx     # Перезапустить\nsudo systemctl reload nginx      # Перечитать конфигурацию (без перезапуска)\nsudo systemctl status nginx      # Показать статус\n\n# Автозапуск при загрузке\nsudo systemctl enable nginx      # Включить автозапуск\nsudo systemctl disable nginx     # Отключить автозапуск\nsudo systemctl enable --now nginx # Включить автозапуск и сразу запустить\n\n# Информация\nsystemctl list-units --type=service              # Все активные сервисы\nsystemctl list-unit-files --type=service          # Все установленные сервисы\nsystemctl is-active nginx                          # Проверить, запущен ли\nsystemctl is-enabled nginx                         # Проверить автозапуск\n\n# Перезагрузка конфигурации systemd (после изменения unit-файлов)\nsudo systemctl daemon-reload\n```\n\n### Unit-файлы\n\nКонфигурационные файлы systemd. Расположение:\n- `\u002Flib\u002Fsystemd\u002Fsystem\u002F` — unit-файлы из пакетов (не редактировать)\n- `\u002Fetc\u002Fsystemd\u002Fsystem\u002F` — пользовательские unit-файлы и переопределения (приоритетнее)\n\n### Структура unit-файла\n\n\u003Cdetails>\n\u003Csummary>Пример unit-файла для Java-приложения\u003C\u002Fsummary>\n\n```ini\n[Unit]\nDescription=My Java Application\nDocumentation=https:\u002F\u002Fexample.com\u002Fdocs\nAfter=network.target postgresql.service\nRequires=postgresql.service\n\n[Service]\nType=simple\nUser=appuser\nGroup=appuser\nWorkingDirectory=\u002Fopt\u002Fmyapp\nExecStart=\u002Fusr\u002Fbin\u002Fjava -jar \u002Fopt\u002Fmyapp\u002Fapplication.jar\nExecStop=\u002Fbin\u002Fkill -SIGTERM $MAINPID\nRestart=on-failure\nRestartSec=10\nStandardOutput=journal\nStandardError=journal\n\n# Ограничение ресурсов\nMemoryMax=512M\nCPUQuota=80%\n\n# Переменные окружения\nEnvironment=SPRING_PROFILES_ACTIVE=production\nEnvironmentFile=\u002Fopt\u002Fmyapp\u002F.env\n\n[Install]\nWantedBy=multi-user.target\n```\n\n\u003C\u002Fdetails>\n\n### Секции unit-файла\n\n| Секция | Описание |\n|---|---|\n| `[Unit]` | Описание, зависимости, порядок запуска. `After` — запуск после указанного юнита. `Requires` — обязательная зависимость. `Wants` — необязательная. |\n| `[Service]` | Параметры сервиса: тип, пользователь, команды запуска\u002Fостановки, политика перезапуска. |\n| `[Install]` | Определяет, в какой target включается сервис при `systemctl enable`. `multi-user.target` — многопользовательский режим без графики. |\n\n### Типы сервисов (Type)\n\n- `simple` — основной процесс запускается напрямую (по умолчанию)\n- `forking` — процесс создаёт дочерний процесс и завершается (классические демоны)\n- `oneshot` — выполняет задачу и завершается\n- `notify` — как `simple`, но сервис уведомляет systemd о готовности\n\n### journalctl — просмотр логов systemd\n\n```bash\njournalctl -u nginx              # Логи конкретного сервиса\njournalctl -u nginx -n 100       # Последние 100 строк\njournalctl -u nginx -f           # Следить в реальном времени (аналог tail -f)\njournalctl --since \"2024-04-01\"  # Логи за период\njournalctl -p err                # Только ошибки и критические\n```\n\n> **На собеседовании:** ключевые моменты — `daemon-reload` после изменения unit-файлов, разница `enable` vs `start`, и умение читать `systemctl status`. Частая ошибка — забыть `daemon-reload` после изменения unit-файла, из-за чего systemd использует старую конфигурацию.","","middle",[7],[],null,{"title":18,"description":19,"ogTitle":18,"ogDescription":19,"keywords":20,"schemaAnswer":19,"featuredSnippetReady":21},"Как работает systemd? Основные команды systemctl и unit-файл — Gymterview","systemd — система инициализации и управления сервисами в Ubuntu 24.04. Основной инструмент управления — `systemctl`.",[7,13],true]