Управление службами Linux

LinuxLinuxBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

Добро пожаловать в этот практический курс по управлению службами в Linux. Службы в Linux - это фоновые процессы, которые обрабатывают важные функции системы, такие как сетевое подключение, ведение журнала, печать и многое другое. Эффективное управление этими службами является важным навыком для администраторов Linux.

В этом курсе вы научитесь использовать команду systemctl, которая является частью набора инструментов systemd - стандартной инициализационной системы и менеджера служб для большинства современных дистрибутивов Linux. Вы научитесь проверять статус служб, управлять службами, запуская и останавливая их, а также настраивать поведение служб при запуске системы.

По окончанию этого курса вы освоите основы управления службами в Linux и сможете эффективно управлять системными службами в среде Linux.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/InputandOutputRedirectionGroup(["Input and Output Redirection"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/InputandOutputRedirectionGroup -.-> linux/redirect("I/O Redirecting") linux/SystemInformationandMonitoringGroup -.-> linux/service("Service Managing") subgraph Lab Skills linux/echo -.-> lab-271377{{"Управление службами Linux"}} linux/cat -.-> lab-271377{{"Управление службами Linux"}} linux/redirect -.-> lab-271377{{"Управление службами Linux"}} linux/service -.-> lab-271377{{"Управление службами Linux"}} end

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

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

Что такое системные службы?

Системные службы (или демоны) - это программы, которые работают в фоновом режиме для выполнения различных системных задач. Обычно они запускаются при загрузке системы и продолжают работать до выключения системы. Примерами служб являются веб-серверы, серверы баз данных, SSH-серверы и службы печати.

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

Начнем с проверки статуса службы SSH (sshd), которая обычно используется для удаленного доступа к системам Linux:

  1. Откройте терминал в среде виртуальной машины LabEx. Вы должны находиться в каталоге по умолчанию, который является /home/labex/project.

  2. Выполните следующую команду для проверки статуса службы SSH:

    systemctl status sshd

    Вы должны увидеть вывод, похожий на следующий:

    ● ssh.service - OpenBSD Secure Shell server
      Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
      Active: active (running) since Wed 2023-10-25 08:15:00 UTC; 1h 30min ago
        Docs: man:sshd(8)
              man:sshd_config(5)
     Process: 1234 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
    Main PID: 1235 (sshd)
       Tasks: 1 (limit: 4915)
      Memory: 5.6M
         CPU: 500ms
      CGroup: /system.slice/ssh.service
              └─1235 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups

    Этот вывод содержит важную информацию о службе:

    • Loaded: Показывает, загружена ли служба и включена ли она для запуска при загрузке системы
    • Active: Показывает, запущена ли служба в данный момент
    • Process/Main PID: Отображает идентификатор процесса службы
    • Memory/CPU: Показывает использование ресурсов
    • Logs: Последние записи журнала, связанные со службой
  3. Если вам нужно проверить статус другой службы, вы можете заменить sshd именем этой службы. Например, чтобы проверить статус веб-сервера Apache (если он установлен):

    systemctl status apache2

Перечисление всех служб

Вы можете перечислить все службы на своей системе с помощью следующих команд:

  1. Чтобы перечислить все активные службы:

    systemctl list-units --type=service --state=active

    Эта команда показывает все службы, которые в данный момент активны на вашей системе.

  2. Чтобы перечислить все службы, независимо от их состояния:

    systemctl list-units --type=service --all

Создание файла со списком служб

Теперь давайте создадим файл для хранения списка всех запущенных служб на системе:

  1. Создайте файл с именем services_list.txt в текущем каталоге, выполнив следующую команду:

    systemctl list-units --type=service --state=running > ~/project/services_list.txt

    Эта команда выполняет systemctl list-units и перенаправляет его вывод в файл с именем services_list.txt в вашем проекте.

  2. Проверьте, что файл был создан и содержит данные:

    cat ~/project/services_list.txt

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

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

Управление системными службами: запуск, остановка и перезапуск

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

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

Практикуйте управление службой SSH:

  1. Сначала проверьте текущий статус службы SSH:

    systemctl status sshd

    Обратите внимание, активна ли служба в данный момент или нет.

  2. Теперь остановите службу SSH:

    sudo systemctl stop sshd

    Эта команда немедленно останавливает службу. В случае успеха команда не выводит никакой информации.

  3. Проверьте, что служба была остановлена:

    systemctl status sshd

    Теперь вывод должен показать, что служба "неактивна (остановлена)":

    ● ssh.service - OpenBSD Secure Shell server
      Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
      Active: inactive (dead) since Wed 2023-10-25 10:15:00 UTC; 5s ago
  4. Запустите службу снова:

    sudo systemctl start sshd
  5. Проверьте, что служба запустилась:

    systemctl status sshd

    Вывод должен показать, что служба снова "активна (запущена)".

Перезапуск служб

Перезапуск службы - это распространенная операция, особенно после изменения ее конфигурации:

  1. Чтобы перезапустить службу SSH:

    sudo systemctl restart sshd

    Эта команда останавливает и затем запускает службу.

  2. Чтобы проверить перезапуск, проверьте статус службы:

    systemctl status sshd

    Посмотрите на строку "Active", чтобы узнать, когда служба была запущена в последний раз.

Создание файла справки по командам управления службами

Создадим файл справки с командами, которые вы узнали:

  1. Создайте файл с именем service_control.txt в вашем проекте:

    echo "Service Control Commands:" > ~/project/service_control.txt
    echo "Start a service: sudo systemctl start <service_name>" >> ~/project/service_control.txt
    echo "Stop a service: sudo systemctl stop <service_name>" >> ~/project/service_control.txt
    echo "Restart a service: sudo systemctl restart <service_name>" >> ~/project/service_control.txt
  2. Проверьте содержимое файла:

    cat ~/project/service_control.txt

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

Управление поведением служб при загрузке системы: включение и отключение

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

Понимание настройки запуска служб

Службы могут быть настроены на автоматический запуск при загрузке системы (включены) или на запуск вручную (отключены). Эта настройка отдельна от текущего состояния работы службы.

Проверка, включена ли служба для запуска при загрузке

  1. Чтобы проверить, настроена ли служба SSH на запуск при загрузке:

    systemctl is-enabled sshd

    Вывод будет либо "enabled" (запускается при загрузке), либо "disabled" (не запускается при загрузке).

Отключение службы

При отключении службы вы настраиваете ее на то, чтобы она не запускалась автоматически при загрузке системы:

  1. Отключите службу SSH:

    sudo systemctl disable sshd

    Вы должны увидеть сообщение о том, что символическая ссылка была удалена:

    Removed /etc/systemd/system/multi - user.target.wants/ssh.service.
  2. Проверьте, что служба теперь отключена:

    systemctl is - enabled sshd

    Вывод должен быть "disabled".

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

    systemctl status sshd

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

Включение службы

При включении службы вы настраиваете ее на автоматический запуск при загрузке системы:

  1. Включите снова службу SSH:

    sudo systemctl enable sshd

    Вы должны увидеть сообщение о том, что символическая ссылка была создана:

    Created symlink /etc/systemd/system/multi - user.target.wants/ssh.service → /lib/systemd/system/ssh.service.
  2. Проверьте, что служба теперь включена:

    systemctl is - enabled sshd

    Вывод должен быть "enabled".

Комбинированные команды

Вы также можете комбинировать включение/отключение со стартом/остановкой в одной команде:

  1. Чтобы отключить и остановить службу одной командой:

    sudo systemctl disable --now sshd
  2. Чтобы включить и запустить службу одной командой:

    sudo systemctl enable --now sshd

Создание файла справки по настройке запуска служб

Создадим файл справки с командами, которые вы узнали:

  1. Создайте файл с именем service_boot.txt в вашем проекте:

    echo "Service Boot Configuration Commands:" > ~/project/service_boot.txt
    echo "Check if a service is enabled: systemctl is - enabled <service_name>" >> ~/project/service_boot.txt
    echo "Enable a service to start at boot: sudo systemctl enable <service_name>" >> ~/project/service_boot.txt
    echo "Disable a service from starting at boot: sudo systemctl disable <service_name>" >> ~/project/service_boot.txt
    echo "Enable and immediately start a service: sudo systemctl enable --now <service_name>" >> ~/project/service_boot.txt
    echo "Disable and immediately stop a service: sudo systemctl disable --now <service_name>" >> ~/project/service_boot.txt
  2. Проверьте содержимое файла:

    cat ~/project/service_boot.txt

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

Резюме

В этом практическом занятии вы изучили основы управления службами в Linux с использованием команды systemctl. Вы отработали важные навыки, которые должен знать каждый администратор Linux:

  1. Проверка статуса служб: Вы научились просматривать текущее состояние служб, что является важным для мониторинга и устранения неполадок.

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

  3. Управление поведением при загрузке: Вы научились включать и отключать службы при запуске системы, что позволяет контролировать, какие службы будут запускаться автоматически после перезагрузки.

Эти навыки являются основой для эффективного управления службами в Linux-окружениях. По мере дальнейшей работы с системами Linux вы обнаружите, что эти команды являются неотъемлемой частью для поддержания стабильности и производительности системы.

Не забывайте, что правильное управление службами имеет решающее значение для безопасности системы, оптимизации ресурсов и обеспечения доступности необходимой функциональности по мере необходимости. Знания, полученные вами в этом практическом занятии, станут основой для более сложных задач по администрированию Linux.