Как управлять автозагрузкой в Ubuntu
Краткое введение в два этапа автозагрузки
Процесс загрузки большинства Linux-дистрибутивов, включая Ubuntu, делится на две части.
- Первая часть начинается с загрузки ядра и длится до появления экрана входа. На этом этапе systemd (или другой init) запускает системные службы, нужные для базовой функциональности: сеть, звук, Bluetooth, печать и т. д.
- Вторая часть начинается после входа в рабочую сессию и включает приложения рабочего стола — мессенджеры, синхронизаторы файлов, апплеты и прочее.
Каждой частью удобнее управлять своими инструментами: systemctl и journalctl для systemd; графический инструмент «Startup Applications» и файлы .desktop для приложений рабочего стола.
Важно: перед любыми изменениями сделайте точку восстановления конфигурации или сохраните копии изменяемых файлов.
Системные службы и systemd
Systemd отвечает за запуск системных юнитов. Для первичной диагностики используйте:
systemd-analyzeЭта команда покажет общее время загрузки (kernel, initrd, userspace). Но чтобы найти «виновников» задержки, выполните:
systemd-analyze blameНаглядный вывод отсортирован по времени запуска — сверху самые «тяжёлые» юниты.

Если список длинный, можно сохранить вывод в файл:
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 todayjournalctl поможет найти ошибки и таймауты при старте конкретных юнитов.
Управление приложениями автозагрузки рабочего стола
Графический инструмент Ubuntu называется Startup Applications. Откройте меню приложений и введите startup, затем выберите соответствующую запись.

В окне «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.
Мини‑методология: шаги для оптимизации автозагрузки
- Оцените общее время: systemd-analyze.
- Найдите «тяжёлые» юниты: systemd-analyze blame.
- Просмотрите логи: journalctl -b.
- Проверьте зависимости: systemctl list-dependencies –reverse.
- Отключите или замаскируйте ненужные службы, тестируя после каждого изменения.
- Упорядочите автозапуск GUI — отключите/удалите/отложите приложения.
- Повторите замеры и задокументируйте изменения.
Чек‑лист по ролям
Для обычного пользователя:
- Посмотреть 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‑инструменты и логи) и здравого смысла (что действительно необходимо запускать всегда). Начните с измерений, отключайте противопоказательные элементы по одному, документируйте изменения и проверяйте поведение системы. Малые улучшения в автозагрузке часто заметно повышают отзывчивость рабочего стола и сокращают время ожидания.
Похожие материалы
Подключение iPhone к Windows 11 — сообщения и звонки
Stringify: Connect Flow для циклов освещения
Как создать блок‑схему в LibreOffice Draw
Как слушать подкасты на колонках Sonos
Удаление файлов с «слишком длинными» именами