Цель урока: Понять разницу между процессом и службой. Освоить 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: Практический сценарий. Установка и менеджмент веб-сервера
-
Подключитесь к серверу под root.
-
Обновите списки пакетов:
apt update
. -
Установим веб-сервер Nginx. Это очень популярный и производительный веб-сервер.
apt install nginx
-
После установки apt автоматически запустит и включит службу nginx. Давайте проверим это.
systemctl status nginx
Вы должны увидеть Active: active (running) и Loaded: ... enabled.
-
Посмотрим на реальные процессы, которые породила эта служба.
ps aux | grep nginx
Вы увидите один мастер-процесс от root и несколько рабочих процессов.
-
Теперь остановим веб-сервер.
systemctl stop nginx
-
Проверьте статус еще раз. Он должен быть Active: inactive (dead).
-
Запустим его обратно:
systemctl start nginx
. -
Представим, что мы не хотим, чтобы веб-сервер стартовал вместе с системой. Отключим автозапуск.
systemctl disable nginx
Проверьте статус - вы увидите, что в строке Loaded теперь написано disabled.
-
Вернем всё как было. Включим автозагрузку обратно.
systemctl enable nginx
-
Теперь полностью уберем за собой. Удалим Nginx вместе с конфигами и почистим зависимости.
apt purge nginx apt autoremove
Итоги урока и домашнее задание
-
Что мы освоили:
-
Разницу между процессом, демоном и службой.
-
Роль systemd как менеджера служб и systemctl как инструмента управления.
-
Полный цикл управления службой: status, start, stop, restart, enable, disable.
-
Как находить процессы с помощью ps aux | grep и завершать их с помощью kill.
-
-
Ваше седьмое задание:
-
Установите другой популярный веб-сервер - apache2 (
apt install apache2
). -
Проверьте его статус (
systemctl status apache2
). -
Остановите службу apache2.
-
Отключите ее из автозагрузки (disable).
-
Убедитесь с помощью status, что служба остановлена (inactive (dead)) и отключена (disabled).
-
Удалите apache2 из системы полностью (purge) и почистите зависимости (autoremove).
-
На следующем уроке мы начнем работать с сетью. Мы разберемся, как узнать IP-адрес сервера, проверить, какие порты он "слушает", и как использовать базовые утилиты для диагностики сетевых соединений.
Перейти к просмотру - УРОК №8.
Промо-код: PROMO15 - скидка 15%!
Введите при оформлении первого заказа на сайте: Hosting-VDS.com