обучение линукс курсы

Цель урока: Понять разницу между процессом и службой. Освоить systemd и его основную команду systemctl для управления жизненным циклом служб (запуск, остановка, перезапуск, автозагрузка). Научиться находить и при необходимости завершать отдельные процессы.

Часть 1: Теория. Оркестр вашего сервера

Чтобы понять, как всё работает, давайте представим простую аналогию.

  • Процесс: Представьте себе рабочего на заводе, выполняющего одну конкретную задачу (например, "копировать файл" или "отвечать на один веб-запрос"). Как только задача выполнена, рабочий (процесс) уходит. Команда ls, которую вы запускаете, - это короткоживущий процесс. Веб-сервер, ожидающий подключения, - это долгоживущий процесс. Каждый процесс в системе имеет уникальный идентификатор - PID (Process ID).

  • Демон (Daemon): Это особый тип рабочего (процесса), который постоянно трудится в фоновом режиме, без вашего прямого контроля и без видимого интерфейса. Веб-серверы, серверы баз данных - всё это демоны.

  • Служба (Service): А теперь представьте, что у вас есть не просто рабочий-демон, а целая должностная инструкция для него. В этой инструкции написано:

    • Как его нанять (запустить).

    • Как его уволить (остановить).

    • Что делать, если он "заболел" (завис) - уволить и нанять нового (перезапустить).

    • Должен ли он приходить на работу каждый день с самого утра (запускаться при старте системы).

Вот эта "должностная инструкция" и есть служба.

  • systemd и systemctl: В современных дистрибутивах Linux (включая свежие Ubuntu, Debian, CentOS) за весь этот "отдел кадров" отвечает менеджер служб под названием systemd. Это дирижер вашего серверного оркестра. А systemctl - это ваша дирижерская палочка, команда, с помощью которой вы отдаете приказы systemd.

Запомните: вы управляете не напрямую процессами, а службами, а systemd уже сам запускает и контролирует нужные процессы.

Часть 2: Практика. Команда systemctl - ваша дирижерская палочка

Когда вы устанавливаете программу-сервер (например, веб-сервер) с помощью apt, она обычно автоматически создает для себя "должностную инструкцию" - файл службы. Мы будем практиковаться на службе SSH, которая позволяет нам подключаться к серверу. Ее служба называется ssh или sshd.

1. Проверка статуса службы: status

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

  • Команда: systemctl status имя_службы

  • Пример:

    systemctl status ssh
  • Что вы увидите (примерный вывод):

    ● ssh.service - OpenBSD Secure Shell server
         Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
         Active: active (running) since Fri 2025-08-08 10:00:00 UTC; 24h ago
       Main PID: 987 (sshd)
          Tasks: 1 (limit: 4662)
         Memory: 5.4M
         CGroup: /system.slice/ssh.service
                 └─987 /usr/sbin/sshd -D
    • Loaded: ... enabled: Служба известна системе и включена для автозапуска.

    • Active: active (running)Служба сейчас работает. Это самое главное.

    • Main PID: 987 (sshd): PID основного процесса этой службы.

2. Остановка и запуск службы: stop и start

  • systemctl stop ssh - остановить службу SSH. (Внимание! Выполнив это, вы не сможете подключиться к серверу по SSH в новой сессии, пока не перезагрузите сервер или не запустите службу из консоли хостинга).

  • systemctl start ssh - запустить службу.

3. Перезапуск службы: restart

Это одна из самых частых операций. Она нужна, когда вы изменили конфигурационный файл службы и хотите, чтобы она перечитала настройки. restart - это элегантный способ сделать stop, а затем start одной командой.

  • Команда:

    systemctl restart ssh

4. "Мягкая" перезагрузка настроек: reload

Некоторые службы (например, веб-серверы) умеют перечитывать свои конфиги без полной остановки. Это позволяет применять изменения без разрыва текущих соединений. Если служба это умеет, reload предпочтительнее, чем restart.

  • Команда:

    systemctl reload nginx

5. Управление автозапуском: enable и disable

  • systemctl enable имя_службы - включить автозапуск службы при старте системы.

  • systemctl disable имя_службы - отключить автозапуск. Служба не будет стартовать сама после перезагрузки.

Часть 3: Практика. Управление процессами напрямую

Иногда нужно найти и "разобраться" с конкретным процессом.

1. Просмотр процессов: ps

Команда ps (Process Status) показывает запущенные процессы. Самый полезный вариант ее использования - с ключами aux.

  • Команда:

    ps aux
    • a - показывать процессы всех пользователей.

    • u - показывать в удобном для человека формате.

    • x - показывать процессы, не привязанные к терминалу (демоны).

Вывод будет огромным. Поэтому ps почти всегда используют в связке с grep (утилита для фильтрации текста), соединенной через пайп |. Пайп | берет вывод одной команды и передает его на вход другой.

  • Пример: Найти все процессы, связанные с ssh.

    ps aux | grep ssh

2. Завершение процесса: kill

Если процесс "завис" и не отвечает на команду systemctl stop, его можно завершить принудительно, зная его PID.

  • Команда: kill [PID]

    • Это "мягкий" способ. Он посылает процессу сигнал, вежливо прося его завершиться.

  • Команда: kill -9 [PID]

    • Это "жесткий" способ (SIGKILL). Он не просит, а убивает процесс немедленно. Используйте его, только если обычный kill не сработал. Это аналог "диспетчера задач" в Windows.

Часть 4: Практический сценарий. Установка и менеджмент веб-сервера

  1. Подключитесь к серверу под root.

  2. Обновите списки пакетов: apt update.

  3. Установим веб-сервер Nginx. Это очень популярный и производительный веб-сервер.

    apt install nginx
  4. После установки apt автоматически запустит и включит службу nginx. Давайте проверим это.

    systemctl status nginx

    Вы должны увидеть Active: active (running) и Loaded: ... enabled.

  5. Посмотрим на реальные процессы, которые породила эта служба.

    ps aux | grep nginx

    Вы увидите один мастер-процесс от root и несколько рабочих процессов.

  6. Теперь остановим веб-сервер.

    systemctl stop nginx
  7. Проверьте статус еще раз. Он должен быть Active: inactive (dead).

  8. Запустим его обратно: systemctl start nginx.

  9. Представим, что мы не хотим, чтобы веб-сервер стартовал вместе с системой. Отключим автозапуск.

    systemctl disable nginx

    Проверьте статус - вы увидите, что в строке Loaded теперь написано disabled.

  10. Вернем всё как было. Включим автозагрузку обратно.

    systemctl enable nginx
  11. Теперь полностью уберем за собой. Удалим Nginx вместе с конфигами и почистим зависимости.

    apt purge nginx
    apt autoremove

Итоги урока и домашнее задание

  • Что мы освоили:

    • Разницу между процессом, демоном и службой.

    • Роль systemd как менеджера служб и systemctl как инструмента управления.

    • Полный цикл управления службой: statusstartstoprestartenabledisable.

    • Как находить процессы с помощью ps aux | grep и завершать их с помощью kill.

  • Ваше седьмое задание:

    1. Установите другой популярный веб-сервер - apache2 (apt install apache2).

    2. Проверьте его статус (systemctl status apache2).

    3. Остановите службу apache2.

    4. Отключите ее из автозагрузки (disable).

    5. Убедитесь с помощью status, что служба остановлена (inactive (dead)) и отключена (disabled).

    6. Удалите apache2 из системы полностью (purge) и почистите зависимости (autoremove).

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

Перейти к просмотру - УРОК №8.

подарок Промо-код: PROMO15 - скидка 15%! огонь

Введите при оформлении первого заказа на сайте: Hosting-VDS.com

авторское право цифровые решения

Помог ли вам данный ответ? 0 Пользователи нашли это полезным (0 голосов)