ENote
  • ✨Home
    • Відмова від відповідальності
  • Progr
    • Python
      • Модулі
        • pip
        • cgitb
        • datetime
          • Класс datetime() модуля datetime
            • Методы объекта datetime.datetime()
            • datetime.datetime examples
          • Класс timedelta() модуля datetime
            • datetime.timedelta examples
          • Класс date() модуля datetime
            • datetime.date examples
          • Класс time() модуля datetime
            • Формат для функций .strftime() и .strptime(). модуля datetime
        • os.path
        • pathlib
          • pathlib to str
        • subproces
        • os
        • Jinja
          • Синтаксис шаблонів Jinja
          • Клас Environment()
          • Простой пример cgi-скрипта c Jinja-шаблоном
          • Создание переменных
            • Як оновити глобальну змінну зсередини оператора IF / ELSE або циклу FOR
          • Фільтри і методи
          • Число у рядок, slices
          • Вбудовані фільтри Jinja2
        • re
          • re.search - example
          • re.findall - example
        • email / smtplib
          • Как отправлять электронные письма с помощью Python
        • requests
          • Як зберегти та завантажити файли cookie в запитах Python?
          • Извлечение и установка cookies с модулем requests в Python
          • Links
        • http.cookies
          • Всё о работе с cookie в Python — класс http.cookies
        • xlrd
        • xlwt
        • borb
          • ChunkOfText
          • send_usage_statistics
          • borb clear
          • 2.1.3 vs 2.1.15
          • QR-code
          • Залежності borb
        • JSON
          • Кирилиця в JSON
        • matplotlib
        • argparse
        • click
        • configparser
        • traceback
        • sys
          • exit()
        • mysql-connector-python
        • logging
        • icrawler
        • Auto Plates
        • rembg
        • random
      • Strings
        • Built-in methods
        • Форматування виводу
        • Початкові нулі
        • Рядок в число
      • list
        • Об’єднання списків
        • list.sort(), sorted()
        • list.reverse(), reversed()
        • all(), any()
        • sum(), min(), max()
        • map(), filter(), reduce()
        • join(), split()
      • tuple
      • dict
        • Об'єднання / злиття словників
        • Сортування словника Python: значення, ключі тощо
      • set
      • class Enum
      • Середнє арифметичне
      • Virtual environment
        • web-app
      • type(), isinstance()
      • __main__
      • Files & Dirs
        • Try except for exception handling
        • Cписок файлов директории
        • User Home Dir
        • Copy file
      • *args, **qwargs
      • Links
      • Область видимости
      • Handling a File Error
      • assert
      • if
      • Числа
        • Округлення чисел
        • Отримати число з рядка
      • Обработка исключений в Python
      • Файлы и сериализация данных
      • OOP
      • Net and Web
      • Структура проекта на Python
      • Распаковка итерируемых объектов
      • Links
      • Algorithms
      • Python exit commands: quit(), exit(), sys.exit() and os._exit()
      • Цикли for / while
      • uuid
    • JavaScript
      • String
        • replaceAll() polyfill
        • Шаблонные строки
      • Array
        • Все способы перебора массива в JavaScript
      • Object
      • document.location
      • RegExp
      • Examples
        • Вычисление остатка от деления
        • Остаток от деления и деление без остатка
        • Округление числа
      • XMLHttpRequest
      • alert, prompt, confirm
      • onclick
      • hidden, display:none
      • LocalStorage, sessionStorage
      • null, undefined
      • cookies (js)
      • var, let и const
        • var vs let
        • const
      • Модифікація DOM
        • DOM select
      • JSON
        • Try
      • fetch
      • typeof
      • FormData не включає disabled набори полів
      • FormData, fdata
      • Більше одного відео YouTube на одній сторінці
    • HTML, CSS
      • favicon
      • Деякі спецсимволи
      • meta
      • ASCII table
      • lang
      • Псевдоелементи ::after і ::before
      • Cursor
      • Об использовании нестандартных пробелов
      • Картинка фоном
      • Безпечні веб-шрифти
      • Завжди внизу, незалежно від пропорцій екрану
      • напівпрозорий елемент
      • Символи з тінью
      • SVG (bootstrap)
      • rel = canonical
      • link stylesheet: integrity & crossorigin
      • rel = noopener
    • Bootstrap
      • Form Validate
      • Password show/hide
    • Errors
  • Dev
    • Git
      • clone
      • git-scm (book)
      • git config
        • files .git*
        • core.filemode
        • core.sharedRepository
      • .gitignore
      • .gitkeep
      • Видалити з репозиторію
        • Видалений файл з однієї гілки...
      • Пам’ятка
        • Перегляд історії комітів
        • Скасувати git add
        • revert
        • Скасувати внесені зміни у файл
        • Додати до коміту файл
        • Видалити історію попередніх коммітів, та почати "з нуля"
        • Додати файли в останній коміт
      • Робота з гілками
        • Порівняти гілки
      • Git за полчаса
      • Три розділи проєкту Git
      • Merge conflict
      • Pull error
        • Git Error: You have divergent branches...
      • diff
      • Video
      • Merge скасувати
      • .gitignore: Permission denied
    • GitHub
      • SSH-підключення до GitHub
      • Перенести на сервер локальный репозиторий
      • Перенести на сервер репозиторій разом з історією
      • Створення змісту
    • Security
      • robots.txt
      • Cookies
    • Аутентифікація і cookies
      • ChatGPT
  • data
    • MySQL
      • MyISAM vs InnoDB
      • Типи даних
        • NULL (todo)
        • TIMESTAMP
        • YEAR
        • JSON
        • Требования к памяти для символьных типов
        • Поиск записей в таблице, которым нет соответствия в другой
      • Приклад створення БД, та користувача
        • Права для пользователей
      • Переглянути всі індекси таблиці
      • Копіювання, клонування таблиць
      • TEMPORARY TABLE
      • JOIN
      • ALTER TABLE
      • AUTO_INCREMENT
        • AUTO_INCREMENT у складовому індексі
      • LIMIT
        • Использование MySQL LIMIT
      • 10 Примеров входной загрузки данных из текстового файла в таблицы MySQL
      • Рішення
        • Выявление и удаление несвязанных записей
        • Выборка произвольных записей
        • Коректне сортування українських літер
        • Найти записи, которые присутствуют в одной таблице и отсутствуют во второй
        • Как удобно посмотреть данные...
        • Нахождение "дыр" в нумерации
        • Знайти дубликати полів в одній таблиці
        • Дані колонки 1 табл. перенести в 2 табл.
      • Функції
        • LAST_INSERT_ID()
        • GROUP_CONCAT
        • COUNT + DISTINCT
        • Функции для работы с датами и временем
      • Автоматизируйте создание бэкапов
      • mysqldump
        • Time Zone UTC
      • Результат запиту у файл
      • Результат запиту у змінну
      • Пособие по MySQL на Python
      • Змінні
      • Эмуляция функции row_number() в MySQL
      • Изучаем хранимые процедуры MySQL
      • SELECT DISTINCT
      • Dump всієї бази даних
      • Індекси
      • FOREIGN KEY
      • MAX(), MIN()
      • LENGTH, CHAR_LENGTH
      • Встановлення
    • MariaDB
    • PostgreSQL
      • Работа с базой данных PostgreSQL
      • Работаем с PostgreSQL через командную строку в Linux
    • Domains
      • Життєвий цикл доменів
      • Статус домена
    • SQLite, MySQL и PostgreSQL: сравниваем популярные реляционные СУБД
  • Linux
    • DNS
      • Как в DNS прописать 301 редирект
      • mail
        • SPF
          • Mirohost
        • _dmarc _domainkey
        • DKIM
        • Прописати ключі DKIM в exim
        • Листи з неіснуючим адресатом
    • Server
      • Zomro
        • pip
        • SSH-доступ по ключу (zomro)
        • venv
        • UnicodeEncodeError: 'latin-1' codec can't encode character
        • Mail Ports
        • Редірект з SSL-сертификатом на транзитному сайті
        • Редірект з SSL за допомогою .htaccess
      • Створення нового користувача з привілеями sudo в Ubuntu
      • SSH-доступ по ключу
      • Часовий пояс в Ubuntu 20.04
      • SSH-підключення командний рядок
      • Як встановити Python 3.9 (нижчу) на Ubuntu 22.04
      • Автозагрузка сервисов в Ubuntu
      • Підвищення безпеки SSH
      • Ubuntu Server
        • Art 01
    • Commands
      • adduser
      • apt
      • cat
      • ls
      • tar
      • ln
      • find
      • chmod
      • chown
      • mv
      • dig
      • ping
      • passwd
      • htpasswd
      • umask
      • usermode
      • history
      • cmp
      • chattr +i
    • Config
      • Keyboard
      • windows
      • My kbdswtch
      • Затримка при завантаженні системи
      • Files
        • /etc/resolv.conf
        • /boot/grub/grub.cfg
        • .config/user-dir.dirs
        • /etc/fstab
      • Як встановити шрифти
    • Apache
      • Встановлення
      • Подключить виртуальный хост
      • Файл .htaccess
        • Установка индексного файла
        • Фільтр IP-адрес
        • ModRewrite
          • Заборонити доступ за User-Agent
          • Перенаправити на іншу сторінку
          • Додавати слеш до адреси
        • Включити SSI
        • Виконувати скрипти CGI
        • Тимчасовий перехід з одного домену на інший
      • SSI
      • SSL
      • Відключити старт Apache з системою
      • Помилки
        • Скрипт не працює
        • CGI-скрипт не виводить кирилицю
        • Could not reliably determine
        • Permissions are missing on a component of the path
        • Symbolic link not allowed or link target not accessible
      • AddType, AddLanguage, AddCharset
    • Nginx
      • 301 редирект з www. та http: на https://(без www.)domain
    • Soft
      • SublimeText
        • Plugins
      • Firefox
      • Gwenview
      • inkscape
      • Double Commander
      • nano
      • mc
        • Знайти потрібний файл
      • meld / diffuse
      • hexedit
      • Kazam - відео з екрану
      • VeraCrypt
      • XnView MP
      • LibreOffice
      • xdotool
      • System Load Monitor
      • Battery Monitor
      • qBittorrent
    • Перетворення .RPM в .DEB
    • Bash
      • Конкатенация строк в Bash
      • Page
    • Файлові часові позначки в Linux: atime, mtime, ctime
    • Права доступу для файлів і каталогів
    • Зміна паролю root
    • Быстро удалить огромное количество файлов в каталоге
    • Як узнати версію Linux?
    • USB Flash ext4
    • Clear Cache
    • Доступ до спільної папки на Windows
    • Віртуальні консолі TTY1–TTY6
    • APT. Заборона оновлення
  • Різне
    • GitBook
    • Банковское округление
    • Ім’я користувача Youtube
  • Hard
    • Hardware
      • Acer Extensa
      • Таймер Feron TM22
      • WD My Book World Edition 2Tb
        • FTP
        • SSH
          • Проблеми
        • SSHFS
      • Canon PIXMA E3340
      • Термометри
    • Auto
      • Акумулятор
    • Electro
    • USB Flash recovery
Powered by GitBook
On this page
  • Стисло
  • Стаття
  • Управление автозагрузкой сервисов в Linux
  • Список сервисов добавленных в автозагрузку
  • Проверка состояния
  • Добавление в автозагрузку
  • Удаление из автозагрузки
  • Автозагрузка сервисов пользователя Linux
  1. Linux
  2. Server

Автозагрузка сервисов в Ubuntu

PreviousЯк встановити Python 3.9 (нижчу) на Ubuntu 22.04NextПідвищення безпеки SSH

Last updated 1 year ago

Стисло

Я відключив в GUI запуск Apache. І він взагалі пропав зі списку. Як включити?

Перевіряємо:

> sudo systemctl is-enabled apache2
disabled

Відключений. Підключаємо (--now - запустити прямо зараз):

> sudo systemctl enable --now apache2
Synchronizing state of apache2.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable apache2
Created symlink /etc/systemd/system/multi-user.target.wants/apache2.service → /lib/systemd/system/apache2.service.

Стаття

Сервис в операционных системах семейства Unix — это программа, что выполняется в фоновом режиме и не имеет окон или других способов связи с пользователем. В операционной системе, работают в фоновом режиме огромное количество сервисов. И запускаются они при старте системы.

Всем этим управляет система инициализации Systemd. С помощью неё можно смотреть какие сервисы сейчас запущены, смотреть их логи, настраивать автозагрузку сервисов и многое другое. В этой статье мы рассмотрим как добавлять сервисы в автозагрузку в Linux на примере Ubuntu.

Управление автозагрузкой сервисов в Linux

В Linux ещё со времен SysVInit существует понятие уровней загрузки (runlevel). Уровень загрузки определяет набор сервисов, которые должны быть запущены. В Systemd эти уровни загрузки тоже были реализованы в виде юнитов целей (target). Вот список уровней загрузки и соответствующие им цели:

  • Run level 0 (poweroff.target, runlevel0.target) - выключение компьютера.

  • Run level 1 (rescue.target, runlevel1.target) - режим восстановления.

  • Run level 3 (multi-user.target, runlevel3.target) - текстовый режим.

  • Run level 5 (graphical.target) - загрузка графического окружения.

  • Run level 6 (reboot.target, runlevel6.target) - перезагрузка системы.

При добавлении сервиса в автозагрузку Systemd просто создает символическую ссылку на файл юнита в папке соответствующего уровня загрузки. А при каком уровне загрузки должен запускаться юнит указано в его конфигурации.

При старте системы, если это рабочая станция с графическим окружением Systemd запускает все сервисы для multi-user.target и затем graphical.target. Для серверов без графического окружения запускается только multi-user.target, а теперь давайте более подробно рассмотрим всё на практике.

Список сервисов добавленных в автозагрузку

Если вам нужно знать какие сервисы на данный момент добавлены в автозагрузку используйте команду list-unit-files с фильтром по состоянию:

systemctl list-unit-files --type=service --state=enabled

Проверка состояния

Для того чтобы проверить находится ли сервис уже в автозагрузке используйте команду is-enabled. Например:

sudo systemctl is-enabled nginx

С помощью команды status вы можете посмотреть находится ли сервис в автоазагрузке, а также проверить запущен ли он в данный момент и посмотреть последние логи:

sudo systemctl status nginx

В строчке Loaded после пути к файлу юнита указано состояние автозагрузки disabled, enabled или static. Сервисы отмеченные как static запускаются автоматически и их автозагрузка не может быть отключена.

Добавление в автозагрузку

Добавить сервис в автозагрузку можно с помощью команды enable:

sudo systemctl enable имя_сервиса

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

sudo systemctl enable nginx

Если сервис ещё не запущен, то вы можете комбинировать команду enable с опцией --now для того чтобы запустить его прямо сейчас:

sudo systemctl enable --now nginx

Большинство системных сервисов, в том числе Nginx загружаются при уровне загрузки 3 (multi-user.target). Вы можете убедится, что в папке /etc/systemd/system/multi-user.target.wants есть ссылка на этот юнит:

ls -l /etc/systemd/system/multi-user.target.wants | grep nginx

Удаление из автозагрузки

Удалить сервис из автозагрузки можно, указав опцию disable:

sudo systemctl disable имя_сервиса

Автозагрузка сервисов пользователя Linux

Кроме системных сервисов, Systemd поддерживает сервисы, запускаемые от имени обычных пользователей. Такие сервисы не требуют прав суперпользователя для управления ими. Для управления такими сервисами нужно использовать опцию --user.

Обычно такие сервисы запускаются при старте первой сессии пользователя и завершаются при завершении его последней сессии. Для того чтобы посмотреть какие сервисы текущего пользователя добавлены в автозагрузку используйте такую команду:

systemctl list-unit-files --user --type=service --state=enabled

Для добавления сервиса в автозагрузку используйте команду enable с опцией --user. Например для добавления pipewire в автозагрузку выполните:

systemctl enable --user pipewire

Аналогично всё будет работать для отключения автозагрузки:

systemctl disable --user pipewire

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

sudo loginctl enable-linger имя_пользователя

Например если имя пользователя sergiy:

sudo loginctl enable-linger sergiy

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

sudo systemctl --user --machine=sergiy@ status pipewire --no-pager

Как было сказано ранее, сервисы, это обычные программы, которые выполняются в фоне и не связанны со стандартными потоками ввода и вывода. В Systemd настройки каждого сервиса находятся в отдельном файле, который хранится в файловой системе. Более подробно обо всём этом можно прочитать в статье, а в этой статье сосредоточимся только на автозагрузке.

https://losst.pro/avtozagruzka-servisov-v-ubuntu
Управление службами в Linux