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

Как запускать программы при старте Ubuntu

6 min read Linux Обновлено 27 Dec 2025
Как запускать программы при старте Ubuntu
Как запускать программы при старте Ubuntu

Будильник на ноутбуке с надписью «startup» на экране

Мы часто открываем одни и те же программы сразу после входа в систему. Ручной запуск каждого приложения занимает время. Некоторые программы на Linux уже настроены на автозапуск, но вы также можете добавить свои приложения, скрипты или команды, чтобы они запускались автоматически при старте системы.

В этом руководстве рассмотрены варианты управления автозапуском в Ubuntu: как через systemd (службы), так и через графический интерфейс GNOME и планировщик cron. Включены практические примеры, отложенный старт, шаблоны и чек‑листы для разных ролей.

Когда выбирать какой способ

  • systemd — для демонов и сервисов, требующих управления статусом, зависимости и логирования.
  • GNOME Startup Applications — для пользовательских GUI‑приложений, быстрого добавления через интерфейс.
  • Cron (@reboot) — для простых одноразовых команд или скриптов при каждом перезапуске.

Важно: не включайте в автозапуск слишком много программ — это замедляет загрузку и увеличивает потребление ресурсов.

Запуск программ при старте с помощью systemd

systemd — это менеджер системных служб, который запускается первым при загрузке ОС. Большинство серверных приложений поставляются с systemd‑unit. Для программ, у которых нет готовой unit‑конфигурации, вы можете создать её сами.

Проверка наличия unit‑файла для программы:

systemctl list-unit-files | grep 

Пример: проверка Apache (apache2):

systemctl list-unit-files | grep apache2

Если unit существует, вы увидите соответствующую строку в выводе.

Пример включения Apache для автозапуска:

sudo systemctl enable apache2

Проверить, включена ли служба:

sudo systemctl is-enabled apache2

Ожидаемый вывод: enabled — значит служба включена и запустится при загрузке.

Отключение автозапуска:

sudo systemctl disable apache2

Создание собственного systemd unit (шаблон)

Если программа не поставляется с unit, создайте unit‑файл в каталоге /etc/systemd/system. Это стандартное место для локальных unit‑файлов, которые вы можете редактировать без перезаписи при обновлениях пакетов.

Пример создания unit‑файла test.service:

sudo nano /etc/systemd/system/test.service

Вставьте содержимое (отредактируйте путь в ExecStart на полный путь к вашей команде):

[Unit]
Description=Тестовый сервис для автозапуска

[Service]
Type=simple
ExecStart=/full/path/to/your/command --arg
Restart=on-failure
User=your-username

[Install]
WantedBy=multi-user.target

Сохраните файл и установите корректные права (обычно 644):

sudo chmod 644 /etc/systemd/system/test.service

После создания unit выполните перечитывание конфигурации и включите сервис:

sudo systemctl daemon-reload
sudo systemctl enable test.service
sudo systemctl start test.service
sudo systemctl status test.service

Советы по unit‑файлам:

  • Используйте Restart=on-failure для автоматического перезапуска при ошибках.
  • Указывайте User= для безопасности, если служба не должна запускаться от root.
  • Для зависимостей применяйте After= и Wants= в секции [Unit].

Запуск программ при старте через GNOME Startup Applications (Программы автозапуска)

GNOME предлагает простой графический инструмент для добавления пользовательских приложений в автозапуск.

Открыть окно автозапуска можно через меню приложений (нажмите Super и введите «Программы автозапуска»), либо через диалог «Выполнить команду» (Alt+F2) и команду:

gnome-session-properties

Окно настроек автозапуска GNOME

В окне «Программы автозапуска» вы увидите список текущих пунктов. Чтобы добавить новое приложение, нажмите «Добавить».

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

  • В поле «Название» укажите понятное имя.
  • В поле «Команда» укажите полный путь до исполняемого файла. Найти путь можно командой which:
which slack

Или нажмите «Обзор» и выберите исполняемый файл.

После добавления убедитесь, что рядом с пунктом стоит галочка — это включает автозапуск.

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

Отложенный запуск программ

Если приложение не нужно сразу после логина, добавьте задержку, чтобы снизить нагрузку на старт системы. В окне редактирования пункта автозапуска в поле «Команда» добавьте префикс sleep:

sleep 120; /usr/bin/slack

Где 120 — время в секундах (2 минуты). Это полезно для тяжёлых приложений, которые можно запускать после восстановления системы.

Чтобы удалить приложение из автозапуска — выберите его и нажмите «Удалить».

Запуск через Cron (@reboot)

Cron позволяет запускать команды по расписанию, в том числе при перезагрузке через специальный шаблон @reboot.

Редактирование crontab для текущего пользователя:

crontab -e

Добавьте строку, начинающуюся с @reboot, например:

@reboot /usr/bin/df -h >> /home/youruser/disk-space.txt

Эта запись будет выполнять команду после каждой перезагрузки и сохранять вывод в файл disk-space.txt в домашней директории.

Чтобы удалить автозапуск — удалите соответствующую строку из crontab и сохраните.

Важно: cron выполняется в минимальном окружении — явно указывайте полные пути и переменные окружения, если они важны для скрипта.

Практическое руководство: чек-листы и шаблоны

Базовый чек‑лист перед добавлением в автозапуск

  • Нужно ли приложению работать до входа других сервисов? Если да — используйте systemd и укажите зависимости.
  • Есть ли у программы графический интерфейс? Если да и нужен пользовательский запуск — GNOME Startup проще.
  • Требует ли запуск прав root? Если да, проверьте безопасность и возможности systemd (User, PermissionsStartOnly).
  • Нужен ли логинг? Для systemd используйте journald; для cron — явно перенаправляйте вывод в файл.
  • Не будет ли приложение блокировать завершение загрузки? Используйте Type=forking или Type=simple и настройте Restart.

Ролевые рекомендации

  • Системный администратор: предпочитайте systemd для контроля статуса, зависимостей, логов и безопасности.
  • Разработчик: используйте systemd для серверных демоноподобных приложений; для тестовых скриптов — cron @reboot.
  • Обычный пользователь: GNOME Startup Applications — простой и безопасный способ добавить GUI‑программу в автозапуск.

Быстрый cheat‑sheet команд

# Проверить наличие unit
systemctl list-unit-files | grep 

# Включить/отключить автозапуск
sudo systemctl enable my.service
sudo systemctl disable my.service

# Проверить состояние unit
sudo systemctl status my.service
sudo systemctl is-enabled my.service

# Создать unit и применить изменения
sudo nano /etc/systemd/system/my.service
sudo chmod 644 /etc/systemd/system/my.service
sudo systemctl daemon-reload
sudo systemctl enable my.service
sudo systemctl start my.service

# Добавить задачу cron на @reboot
crontab -e
# в crontab добавить строку вида
@reboot /path/to/script.sh >> /home/user/log.txt 2>&1

# GNOME: открыть окно автозапуска
gnome-session-properties

Когда выбранный подход не сработает (ограничения и подводные камни)

  • systemd не подходит для «чистой» GUI‑автозапуска в пользовательской сессии — лучше использовать GNOME Startup или .desktop‑файлы в ~/.config/autostart.
  • Cron запускается до полной загрузки графической сессии; GUI‑приложения, запущенные через @reboot, могут не отобразиться корректно.
  • Отложенный старт с помощью sleep в GNOME удобен, но ненадёжен для тонкой синхронизации; лучше использовать systemd‑таймеры (systemd timers) для точного планирования.
  • Если у приложения есть проблемы с правами или путями — проверьте переменные окружения и абсолютные пути.

Альтернативные подходы и расширения

  • systemd timers — замена cron с тесной интеграцией в systemd и контролем состояния таймеров.
  • .desktop файлы в ~/.config/autostart — ещё один пользовательский способ автозапуска GUI‑приложений; совместим с множеством сред рабочего стола.
  • Upstart (устаревший) и init.d — применимы в очень старых дистрибутивах, в современных Ubuntu рекомендуется systemd.

Мини‑методология внедрения автозапуска в проекте (4 шага)

  1. Классификация: сервис, пользовательское приложение или одноразовый скрипт?
  2. Выбор метода: systemd / GNOME / cron / .desktop.
  3. Реализация: создать unit/.desktop/cron‑запись; указать полные пути и пользователя.
  4. Тестирование и мониторинг: systemctl status, journalctl -u, проверка логов и загрузки.

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

  • Сервис/программа корректно запускается после перезагрузки без ручного вмешательства.
  • Логи запуска доступны (journalctl для systemd, файлы логов для cron).
  • Приложение работает под требуемым пользователем и не нарушает безопасность системы.
  • При отключении автозапуска программа не стартует после следующей перезагрузки.

Краткая глоссарий 1‑строчками

  • systemd — системный менеджер служб инициализации и контроля сервисов.
  • unit — единица конфигурации systemd (файл с описанием сервиса).
  • crontab — таблица cron для планирования задач.
  • @reboot — специальный маркер cron для запуска при перезагрузке.
  • .desktop — файл автозапуска для графических окружений (XDG Autostart).

Замечания по безопасности и хорошим практикам

  • Не запускайте малознакомые бинарники от root в автозапуске.
  • Ограничьте доступ к unit‑файлам и скриптам (права 644/700 по контексту).
  • Используйте отдельного пользователя с минимальными правами для сервисов, которым не нужен root.
  • Логируйте вывод и следите за поведением в течение первых нескольких перезагрузок.

Итог

Автоматический запуск программ при старте Ubuntu можно реализовать несколькими способами: systemd для сервисов, GNOME Startup для пользовательских GUI‑приложений и cron (@reboot) для простых задач. Выбор зависит от характера программы, требований к логированию и безопасности. Следуйте чек‑листу, проверяйте логи и избегайте избыточного автозапуска, чтобы не замедлять загрузку системы.

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

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

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

Настройка нескольких мониторов: параметры и советы
Мониторы

Настройка нескольких мониторов: параметры и советы

Сброс сетевых настроек в Windows 10 — полное руководство
Windows

Сброс сетевых настроек в Windows 10 — полное руководство

Всплеск спама в почте: как реагировать и защититься
Безопасность

Всплеск спама в почте: как реагировать и защититься

Как сделать fade‑in и fade‑out в GarageBand
Аудио

Как сделать fade‑in и fade‑out в GarageBand

Текст в Midjourney: как получить читабельные надписи
Генерация изображений

Текст в Midjourney: как получить читабельные надписи

Как отслеживать интернет‑трафик и избежать перерасхода
Сеть

Как отслеживать интернет‑трафик и избежать перерасхода