Управление системными службами в популярных дистрибутивах Linux на базе systemd (таких как Debian, Arch Linux, Ubuntu и другие) выполняется с помощью универсального инструмента командной строки systemctl. Исторически программы, работающие в фоновом режиме без графического интерфейса и ожидающие определенных событий (например, веб-серверы или SSH-серверы), назывались демонами. Современный системный менеджер позволяет не только контролировать их работу, но и гибко настраивать зависимости. Перед началом работы с системными компонентами полезно освежить знания в материале про основные команды терминала Linux для начинающих пользователей, а также узнать, как инсталлировать необходимый софт, обратившись к инструкции про как устанавливать программы через терминал в Linux: pacman и DNF.
Что понадобится
- Компьютер или сервер под управлением дистрибутива Linux с установленным менеджером systemd.
- Доступ к терминалу.
- Права суперпользователя (root) для выполнения большинства управляющих команд.
1. Просмотр состояния служб и юнитов
Первый шаг в администрировании заключается в анализе текущего состояния служб в памяти операционной системы.
- Откройте терминал.
- Выведите список всех активных служб, находящихся в памяти, с помощью команды:
systemctl list-units --type=service
- Проверьте статус конкретной службы, например, демона Bluetooth, выполнив команду:
systemctl status bluetooth
- Для проверки того, активна ли служба в данный момент (возвращает код завершения 0, если запущена), используйте:
systemctl is-active bluetooth
- Выведите список служб, которые находятся в аварийном состоянии (failed):
systemctl --failed
Как понять, что всё получилось: в терминале отобразится таблица с юнитами, их состоянием (LOAD, ACTIVE, SUB) или подробная текстовая сводка по указанной службе с последними записями из системного журнала.
2. Запуск, остановка и перезапуск служб
Управление активностью процессов выполняется через базовые команды systemctl.
- Запустите нужную службу немедленно, выполнив команду с правами суперпользователя:
sudo systemctl start sshd
- Остановите работающий процесс, если он больше не требуется:
sudo systemctl stop sshd
- Перезапустите службу для применения новых конфигурационных файлов:
sudo systemctl restart sshd
- Выполните мягкую перезагрузку конфигурации без полного перезапуска процесса (если это поддерживается службой):
sudo systemctl reload sshd
Как понять, что всё получилось: команды выполняются без ошибок в терминале, а повторная проверка статуса через systemctl status показывает состояние active (running).
3. Настройка автозапуска при загрузке системы
Чтобы службы автоматически стартовали при включении компьютера, их необходимо активировать в менеджере конфигурации.
- Добавьте службу в автозагрузку при старте системы:
sudo systemctl enable sshd
- Используйте универсальный ключ --now, чтобы одновременно включить автозапуск и запустить службу прямо сейчас без дополнительных команд:
sudo systemctl enable --now sshd
- Отключите автоматический запуск службы при загрузке:
sudo systemctl disable sshd
Как понять, что всё получилось: в выводе команды появится строка создания символических ссылок (Created symlink...), подтверждающая добавление юнита в автозагрузку.
4. Блокировка и маскировка служб
Иногда требуется полностью запретить запуск определенной службы, чтобы исключить ее случайную активацию сторонними приложениями или зависимостями.
- Заблокируйте службу (выполнив ее маскировку), связав её с системным устройством /dev/null:
sudo systemctl mask sshd
- Проверьте список замаскированных файлов конфигурации:
systemctl list-unit-files --state=masked
- Снимите маскировку, когда потребуется вернуть возможность запуска:
sudo systemctl unmask sshd
Как понять, что всё получилось: при попытке запустить замаскированную службу система выдаст ошибку о том, что юнит заблокирован (masked).
5. Просмотр сокетов и таймеров
Менеджер systemd управляет не только традиционными службами, но также сокетами и таймерами, заменяющими классическую службу cron.
- Выведите список всех активных сокет-юнитов, упорядоченных по адресу прослушивания:
systemctl list-sockets
- Просмотрите список запланированных таймеров и время их следующего срабатывания:
systemctl list-timers
Как понять, что всё получилось: терминал выведет структурированные таблицы с информацией о сетевых сокетах или расписанием работы системных таймеров (с указанием времени до следующего запуска в колонке LEFT).
Если не получилось
Если служба не запускается или выдает ошибку, детально изучите ее логи с помощью утилиты командной строки journalctl -u имя_службы. Убедитесь, что имя юнита указано правильно (полное название с расширением .service можно не писать, systemd подставит его автоматически, но для некоторых составных имен с символом @ могут потребоваться уточнения параметров). Если вы управляете пользовательскими процессами от обычного не привилегированного пользователя, не забывайте добавлять флаг --user к любой команде systemctl, например: systemctl --user status.



