Гид по технологиям

Как управлять автозагрузкой в Ubuntu

5 min read Sysadmin Обновлено 22 Nov 2025
Управление автозагрузкой в Ubuntu
Управление автозагрузкой в Ubuntu

Краткое введение в два этапа автозагрузки

Процесс загрузки большинства Linux-дистрибутивов, включая Ubuntu, делится на две части.

  • Первая часть начинается с загрузки ядра и длится до появления экрана входа. На этом этапе systemd (или другой init) запускает системные службы, нужные для базовой функциональности: сеть, звук, Bluetooth, печать и т. д.
  • Вторая часть начинается после входа в рабочую сессию и включает приложения рабочего стола — мессенджеры, синхронизаторы файлов, апплеты и прочее.

Каждой частью удобнее управлять своими инструментами: systemctl и journalctl для systemd; графический инструмент «Startup Applications» и файлы .desktop для приложений рабочего стола.

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

Системные службы и systemd

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

systemd-analyze

Эта команда покажет общее время загрузки (kernel, initrd, userspace). Но чтобы найти «виновников» задержки, выполните:

systemd-analyze blame

Наглядный вывод отсортирован по времени запуска — сверху самые «тяжёлые» юниты.

Анализ времени загрузки systemd с указанием долгих служб

Если список длинный, можно сохранить вывод в файл:

systemd-analyze blame >> ~/systemd-blame.txt

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

sudo systemctl list-dependencies NAME_OF_SERVICE --reverse

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

sudo systemctl disable NAME_OF_SERVICE --now

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

sudo systemctl mask NAME_OF_SERVICE

Чтобы вернуть обратно:

sudo systemctl unmask NAME_OF_SERVICE
sudo systemctl enable NAME_OF_SERVICE --now

Пояснения:

  • disable убирает автозапуск, но при успешном вызове вручную служба запустится;
  • mask ставит символическую ссылку на /dev/null, что полностью блокирует запуск;
  • check (проверка статуса):
systemctl status NAME_OF_SERVICE
systemctl is-enabled NAME_OF_SERVICE
systemctl is-active NAME_OF_SERVICE

Пользовательские systemd‑юниты

Некоторые приложения регистрируются как user‑units и запускаются через systemd для пользователя. Посмотреть их можно командой:

systemctl --user list-units --type=service

В отличие от системных юнитов, user‑units управляются без sudo и влияют лишь на текущую сессию.

Логи и дополнительные диагнозы

Для изучения логов используйте journalctl. Примеры:

journalctl -b 0 --no-pager | less
journalctl -u NAME_OF_SERVICE --since today

journalctl поможет найти ошибки и таймауты при старте конкретных юнитов.

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

Графический инструмент Ubuntu называется Startup Applications. Откройте меню приложений и введите startup, затем выберите соответствующую запись.

Окно поиска приложения автозагрузки в меню Ubuntu

В окне «Startup Applications Preferences» вы увидите список приложений, которые запускаются после входа.

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

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

Снимок галочки для отключения автозапуска приложения

Чтобы полностью удалить запись, выделите её и нажмите Remove.

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

sleep 60; EXISTING_COMMAND

Например, чтобы задержать Dropbox на 60 секунд:

sleep 60; /usr/bin/dropbox start -i

Редактирование записи автозапуска для добавления задержки

Добавление нового приложения в автозапуск

Нажмите Add, задайте «Name», «Command» и при желании «Comment». Для выбора исполняемого файла используйте Browse…

Добавление приложения в список автозапуска через диалог

Альтернативный способ — создать или редактировать .desktop-файл в одной из директорий:

  • ~/.config/autostart/ — только для текущего пользователя;
  • /etc/xdg/autostart/ — для всех пользователей.

Пример простого .desktop:

[Desktop Entry]
Type=Application
Name=MyApp
Exec=/usr/bin/myapp --flag
X-GNOME-Autostart-enabled=true
Comment=Запуск MyApp при входе

Чтобы отключить автозапуск, можно установить X-GNOME-Autostart-enabled=false или добавить строку Hidden=true.

Когда отключение не поможет — контрпримеры

  • Медленное аппаратное обеспечение (старый HDD) будет тормозить загрузку независимо от служб.
  • Проблемы с initramfs, драйверами или прошивкой (firmware) требуют диагностики на уровне ядра и загрузчика.
  • Если задержки вызваны сетью (например, ожидание сетевого таймаута при монтировании NFS), отключение локальных приложений не исправит проблему.
  • Отложенный автозапуск слишком многих приложений может просто переместить загрузочную нагрузку на первые минуты сессии.

Альтернативные подходы и оптимизации

  • Используйте параллельный старт systemd (включён по умолчанию) и уменьшайте таймауты юнитов через параметр TimeoutStartSec в unit-файле.
  • Передвиньте тяжёлые фонофорные задачи в systemd‑timer вместо автозапуска при логине.
  • Для приложений, которые не должны работать постоянно, замените автозапуск на on-demand старт через socket‑activation или cron @reboot.
  • Переносите задачи в systemd‑user unit с ограничением ресурсов через slice/cgroup.

Мини‑методология: шаги для оптимизации автозагрузки

  1. Оцените общее время: systemd-analyze.
  2. Найдите «тяжёлые» юниты: systemd-analyze blame.
  3. Просмотрите логи: journalctl -b.
  4. Проверьте зависимости: systemctl list-dependencies –reverse.
  5. Отключите или замаскируйте ненужные службы, тестируя после каждого изменения.
  6. Упорядочите автозапуск GUI — отключите/удалите/отложите приложения.
  7. Повторите замеры и задокументируйте изменения.

Чек‑лист по ролям

Для обычного пользователя:

  • Посмотреть Startup Applications и отключить ненужные приложения.
  • Проверить ~/.config/autostart на лишние .desktop.
  • Добавить задержку sleep для тяжёлых, но не обязательных приложений.

Для администратора/системного инженера:

  • Просмотреть systemd-analyze blame и journalctl.
  • Проверить, какие unit-файлы имеют TimeoutStartSec и долго запускаются.
  • Использовать mask для явно нежелательных служб.
  • Тестировать изменения на тестовой машине перед развёртыванием.

Критерии приёмки

  • Время до рабочего стола уменьшилось (сравните systemd-analyze до и после).
  • Нет новых ошибок в journalctl за период 10–15 минут после входа.
  • Отключённые службы не влияют на критичные функции (сеть, ssh, управление пользователями и т. д.).
  • Документация изменений загружена в систему контроля конфигураций.

Факт‑бокс: основные команды

  • systemd-analyze — общее время загрузки
  • systemd-analyze blame — кто дольше всех
  • systemctl disable/enable/mask/unmask — управление автозапуском
  • journalctl -b — лог текущей загрузки
  • ~/.config/autostart/ — пользовательские .desktop

Примеры файлов и сниппеты

Пример .desktop для отложенного старта через оболочку:

[Desktop Entry]
Type=Application
Name=DelayedMyApp
Exec=bash -c "sleep 30; /usr/bin/myapp --start"
X-GNOME-Autostart-enabled=true

Пример systemd‑user unit для запуска приложения после входа с задержкой:

[Unit]
Description=Запуск MyApp после входа с задержкой

[Service]
Type=simple
ExecStart=/bin/bash -c 'sleep 30; /usr/bin/myapp --start'

[Install]
WantedBy=default.target

Сохраните как ~/.config/systemd/user/delayed-myapp.service и включите:

systemctl --user enable --now delayed-myapp.service

Безопасность и приватность

  • Не отключайте службы, которые обеспечивают доступ по сети (sshd), если вы работаете удалённо.
  • Отключая службы, убедитесь, что это не сделает систему уязвимой (например, отключение брандмауэра будет рискованным).
  • Удаление/изменение системных юнитов требует sudo — фиксируйте каждое изменение.

Схема принятия решения

flowchart TD
  A[Начало: медленная загрузка] --> B{Наблюдается задержка до входа?}
  B -- Да --> C[Использовать systemd-analyze и journalctl]
  B -- Нет --> D[Проверить автозапуск рабочего стола]
  C --> E{Найден тяжёлый юнит?}
  E -- Да --> F[Проверить зависимости и отключить/замаскировать]
  E -- Нет --> G[Проверить hardware/firmware/драйверы]
  D --> H[Отключить/отложить приложения в Startup Applications или .desktop]
  F --> I[Провести тесты и откатить при проблемах]
  H --> I
  G --> I
  I --> Z[Конец]

Часто задаваемые вопросы

Можно ли полностью удалить запись автозапуска приложения? Да — удалите соответствующий .desktop из ~/.config/autostart или из /etc/xdg/autostart (для системного удаления нужен sudo).

Чем отличается disable от mask? disable убирает автозапуск, но служба может быть запущена вручную; mask полностью блокирует запуск, ставя ссылку на /dev/null.

Как вернуть службу назад, если после отключения что‑то перестало работать? Включите её заново: sudo systemctl unmask NAME && sudo systemctl enable –now NAME. Проверяйте логи journalctl.

Итог

Оптимизация автозагрузки — это сочетание анализа (systemd‑инструменты и логи) и здравого смысла (что действительно необходимо запускать всегда). Начните с измерений, отключайте противопоказательные элементы по одному, документируйте изменения и проверяйте поведение системы. Малые улучшения в автозагрузке часто заметно повышают отзывчивость рабочего стола и сокращают время ожидания.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Подключение iPhone к Windows 11 — сообщения и звонки
Руководство

Подключение iPhone к Windows 11 — сообщения и звонки

Stringify: Connect Flow для циклов освещения
Умный дом

Stringify: Connect Flow для циклов освещения

Как создать блок‑схему в LibreOffice Draw
Гайды

Как создать блок‑схему в LibreOffice Draw

Как слушать подкасты на колонках Sonos
Аудио

Как слушать подкасты на колонках Sonos

Удаление файлов с «слишком длинными» именами
Windows

Удаление файлов с «слишком длинными» именами

Переименование файлов в числа в Linux
Linux

Переименование файлов в числа в Linux