Автозагрузка скриптов в Ubuntu: 3 рабочих способа для любого сценария

Автозагрузка скриптов в Ubuntu: 3 рабочих способа для любого сценария

Хотите, чтобы ваши программы и настройки запускались сами, как по волшебству, сразу после включения компьютера? Представьте, что вам больше не нужно вручную запускать любимый мессенджер, сервер для разработки или скрипт для автоматизации рутины. Система делает всё за вас, пока вы пьёте утренний кофе.

Эта статья — ваш прямой путь к автоматизации. Мы не будем грузить теорией, а сразу перейдём к делу. Вы узнаете несколько проверенных методов добавления скриптов в автозагрузку, от самых простых для начинающих до продвинутых для опытных пользователей.

Вы освоите работу с графическим меню «Автозагрузки» в GNOME — это буквально пара кликов. Поймёте, как гибко управлять автозапуском через конфигурационные файлы .desktop, давая вам полный контроль. И мы разберём мощный инструмент — систему systemd, которая позволяет запускать скрипты как на уровне всей системы, так и для отдельного пользователя.

Каждый способ подробно описан и сопровождается готовыми примерами кода. Вы научитесь создавать простые скрипты, сделаете их исполняемыми и настроите на автоматический запуск при старте Ubuntu или сразу после вашего входа в систему. Больше никакой рутины — ваша система будет работать так, как вы хотите. Готовы настроить автозапуск один раз и забыть о ручных действиях? Тогда читайте статью и выбирайте свой идеальный метод!


Иногда возникает необходимость выполнить свой скрипт во время загрузки системы или при входе пользователя в систему. Например, чтобы запустить определенную программу, поменять настройки разрешения экрана, запустить программу удалённого управления и так далее.

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


Содержание статьи

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

Скорее всего, у вас уже есть скрипт, который вы хотите запускать. Но если нет, или же вы хотите попрактиковаться с другим скриптом, то создайте скрипт в папке /usr/local/bin. Эта папка обычно используется для хранения пользовательских бинарных файлов. Дальше в этой статье я буду использовать путь к скрипту /usr/local/losst-script.sh:

sudo vi /usr/local/losst-script.sh

#!/bin/bash echo "Hello world" > ~/file

Этот скрипт просто выводит строчку "Hello world" в файл в домашней папке текущего пользователя. Более подробно о создании скриптов читайте в статье написание скриптов на Bash. Когда скрипт будет готов, сделайте его исполняемым:

sudo chmod ugo+x /usr/local/losst-script.sh

Вы можете запустить скрипт и убедится что он работает. А теперь давайте рассмотрим как добавить скрипт в автозагрузку Ubuntu.

Автозагрузка скрипта при старте системы

В Systemd нет способа запускать все пользовательские скрипты в одном месте. Но вы можете создать юнит файл, который будет запускать ваш скрипт. Для этого используйте следующую команду:

sudo systemctl edit --force --full script.service

Команда откроет текстовый редактор, добавьте в него такое содержимое:

[Unit] Description=My Script Service After=multi-user.target [Service] Type=idle ExecStart=/usr/local/losst-script.sh [Install] WantedBy=multi-user.target

Автозагрузка скриптов в Ubuntu: 3 рабочих способа для любого сценария

В строчке ExecStart можно прописать либо путь к скрипту, который надо выполнить, либо саму команду. Кроме того, здесь используется тип сервиса Idle, который означает что процесс не будет разветвляться.

Теперь добавьте этот скрипт в автозагрузку:

sudo systemctl enable script

Если Systemd не видит такого сервиса, обновите информацию о юнитах с помощью команды:

sudo systemctl daemon-reload

После этого скрипт запустится во время инициализации системы. Вы можете убедится что всё работает, перезагрузив систему и посмотрев в папку /root. Там должен появится файл с текстом Hello world.

Если вам больше нравится старый способ загрузки скриптов, с помощью rc.local, вы можете создать файл /etc/rc.local, сделать его исполняемым и прописать путь к нему в строке ExecStart юнит-файла, после чего сможете им пользоваться как это было до появления Systemd.

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

Такой тип автозагрузки может быть полезным для запуска приложений пользователя или программ удалённого управления, например x11vnc.

1. Автозагрузка Gnome в GUI

Запустите утилиту Автоматически запускаемые приложения или Startup Applications в главном меню системы. Эту же утилиту можно запустить из терминала выполнив команду:

gnome-session-properties

Нажмите кнопку Добавить (Add) и в открывшемся окне, в поле Команда (Command) введите полный путь к файлу вашего скрипта или выберите его с помощью кнопки Обзор (Browse), затем нажмите Добавить (Add) внизу окна:

Автозагрузка скриптов в Ubuntu: 3 рабочих способа для любого сценария

Скрипт будет выполнен после загрузки графической оболочки Ubuntu. Вы можете перезагрузить систему и убедится, что в домашней папке вашего пользователя появился файл file, с содержимым "Hello world".

2. Автозагрузка Gnome вручную

Всё описанное в предыдущем пункте можно сделать и вручную, без утилиты Startup Applications. Ярлыки приложений для автозагрузки могут находится в двух расположениях:

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

Для создания ярлыка, который будет запускать ваш скрипт, создайте файл с расширением .desktop в одной из папок со следующим содержимым:

vi ~/.config/autostart/script.desktop

[Desktop Entry] Name=Script Type=Application Exec=/usr/local/losst-script.sh

Здесь в поле Exec необходимо прописать путь к скрипту, который надо выполнить, а в поле Name имя ярлыка. После этого ваш скрипт будет запускаться автоматически при входе пользователя в графическую оболочку. Утилита Startup Applications будет видеть этот ярлык и вы можете управлять им там тоже.

3. Автозагрузка в Systemd

Система инициализации Systemd позволяет запускать отдельный набор сервисов для каждого пользователя. Для управления такими сервисами нужно использовать опцию --user. Используйте такую команду для того чтобы создать файл скрипта:

systemctl edit --user --force --full script.service

[Unit] Description=My Script Service After=default.target [Service] Type=idle ExecStart=/usr/local/losst-script.sh [Install] WantedBy=default.target

Автозагрузка скриптов в Ubuntu: 3 рабочих способа для любого сценария

Юнит файл будет создан только для текущего пользователя. В данном случае это будет файл /home/sergiy/.config/systemd/user/script.service. Обратите внимание, что цель multi-user.target здесь недоступна, поэтому следует использовать default.target. Теперь осталось только добавить этот юнит в автозагрузку:

systemctl enable --user script.service

Поле этого можно перезагрузить систему и убедится что всё работает.

Выводы

Теперь вы знаете как добавить скрипт в автозагрузку Linux несколькими способами. Это может быть немного сложно для начинающих, но вы можете ознакомиться ещё со статьей про Автозагрузку сервисов, а также Управление службами для того чтобы лучше понимать как всё работает.

Оставить комментарий


Кликните на изображение чтобы обновить код, если он неразборчив