Управление системными службами с помощью 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,reloadenable/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 — локальная установка не требуется.
Все уроки этого курса
- Управление пользователями и группами
- Мониторинг системных процессов
- Планирование задач с помощью Cron
- Управление системными службами с помощью systemd