0Pricing
Linux Server Deployment & SSH Mastery · Урок

Управление системными службами с помощью systemd

Управляйте долгоживущими программами, обеспечивающими работу сервера Linux, с помощью systemd: запускайте, останавливайте и включайте службы, проверяйте их состояние, читайте журналы через journalctl и понимайте роль юнитов в управлении процессами.

«Управление системными службами с помощью systemd» — бесплатный урок Linux Server Deployment & SSH Mastery на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Linux Server Deployment & SSH Mastery, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Linux Server Deployment & SSH Mastery содержит 4 уроков всего.

Службы и обычные процессы

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

В современных системах Linux службами управляет systemd — менеджер системы и служб.

Чем управляет systemd

systemd организует всё в виде модулей. Самый распространённый тип — модуль .service, описывающий запуск демона.

Команда systemctl — Ваш основной интерфейс для просмотра и управления этими модулями.

systemctl --version

Проверка состояния службы

systemctl status показывает, запущена ли служба, идентификатор её основного процесса, последние строки журнала и включён ли её запуск при загрузке.

Обычно это первая команда, которую Вы выполняете при поиске причины неполадок службы.

systemctl status nginx

Запуск и остановка служб

Управлять состоянием службы можно с помощью команд start, stop и restart. Они применяются немедленно, но не изменяют поведение при загрузке.

Используйте reload, если служба поддерживает повторное чтение конфигурации без разрыва соединений.

sudo systemctl start nginx
sudo systemctl restart nginx
sudo systemctl reload nginx
sudo systemctl stop nginx

Включение служб при загрузке

enable заставляет службу запускаться автоматически при загрузке сервера, а disable удаляет её из запуска при загрузке. Это не зависит от того, запущена ли служба прямо сейчас.

Удобный флаг --now одновременно включает и запускает службу.

sudo systemctl enable nginx
sudo systemctl enable --now nginx
sudo systemctl disable nginx

Просмотр служб

Чтобы увидеть установленные и запущенные службы, выведите список файлов модулей или активных модулей.

  • list-units --type=service — загруженные в данный момент службы
  • list-unit-files --type=service — все установленные службы и их состояние включения
systemctl list-units --type=service --state=running
systemctl list-unit-files --type=service

Чтение журналов с помощью journalctl

systemd записывает вывод служб в журнал. Запрашивайте его с помощью journalctl.

  • -u nginx — только эта служба
  • -f — следить за обновлениями в реальном времени
  • -e — перейти в конец
sudo journalctl -u nginx -f
sudo journalctl -u ssh --since '1 hour ago'

Структура файла модуля

Служба определяется файлом модуля, который обычно находится в /etc/systemd/system/ или /lib/systemd/system/. В нём есть три ключевых раздела: [Unit], [Service] и [Install].

Строка ExecStart сообщает systemd, какую команду нужно выполнить.

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

[Service]
ExecStart=/usr/bin/myapp --port 8080
Restart=on-failure

[Install]
WantedBy=multi-user.target

Создание собственной службы

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

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

sudo nano /etc/systemd/system/myapp.service
sudo systemctl daemon-reload
sudo systemctl enable --now myapp

Автоматический перезапуск после сбоя

Одна из лучших возможностей systemd — автоматическое восстановление. Директива Restart= указывает перезапускать аварийно завершившуюся службу.

  • Restart=on-failure — только после завершения с ненулевым кодом
  • Restart=always — при каждой остановке
  • RestartSec=5 — ждать перед повторной попыткой
[Service]
ExecStart=/usr/bin/myapp
Restart=always
RestartSec=5

Рекомендации

Управляйте службами уверенно:

  • Различайте работу службы (start) и запуск при загрузке (enable)
  • Выполняйте daemon-reload после изменения файлов модулей
  • Используйте journalctl -u для поиска ошибок вместо разрозненных файлов журналов
  • Добавляйте Restart=on-failure для устойчивости собственных приложений

Быстрая проверка

Проверьте свои знания о systemd.

Итоги

Теперь Вы умеете управлять службами сервера с помощью systemd:

  • status, start, stop, restart, reload
  • enable/disable для управления запуском при загрузке
  • journalctl -u для просмотра журналов служб
  • Собственные файлы модулей .service с Restart= для повышения устойчивости

Это дополняет Ваши навыки управления процессами и задачами работой с долгоживущими демонами.

Часто задаваемые вопросы

Урок «Управление системными службами с помощью systemd» бесплатный?

Да — полный текст урока «Управление системными службами с помощью systemd» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Linux Server Deployment & SSH Mastery, подпишись на CoddyKit PRO. Курс Linux Server Deployment & SSH Mastery содержит 4 уроков всего.

Чему я научусь в уроке «Управление системными службами с помощью systemd»?

Управляйте долгоживущими программами, обеспечивающими работу сервера Linux, с помощью systemd: запускайте, останавливайте и включайте службы, проверяйте их состояние, читайте журналы через journalctl… Ты практикуешь Linux Server Deployment & SSH Mastery с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Linux Server Deployment & SSH Mastery?

Предыдущий опыт не требуется. Linux Server Deployment & SSH Mastery на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Управление системными службами с помощью systemd»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Linux Server Deployment & SSH Mastery?

Да. Каждый урок Linux Server Deployment & SSH Mastery включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Управление пользователями и группами
  2. Мониторинг системных процессов
  3. Планирование задач с помощью Cron
  4. Управление системными службами с помощью systemd
← Назад к Linux Server Deployment & SSH Mastery