Автозапуск программ в linux. Как в Linux добавить программу в автозагрузку? Автозагрузка окружения рабочего стола

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

В этой статье мы поговорим о том, как работает автозагрузка в Ubuntu, какие существуют способы автозагрузки в этой системе и как добавить туда программы.

АВТОЗАГРУЗКА В UBUNTU

Первым делом нужно сказать, что в Ubuntu существует несколько уровней автозагрузки. Я не буду говорить здесь про systemd и , так как уже рассматривал это в одной из первых статей. Программу или скрипт можно добавить в автозагрузку такими путями:

  • Утилита «Автоматически запускаемые приложения»;
  • Папка «Автозапуск»;
  • Файл rc.local;
  • Файл Xinitrc;

Мы рассмотрим первые два способа, поскольку два последние более рассчитаны на скрипты, а не программы. Сначала автозагрузка в Ubuntu с помощью стандартной утилиты.

Откройте меню системы и наберите «Авто» и откройте программу, которая будет первой в списке, Автоматически запускаемые приложения:

Здесь будут перечислены все приложения, которые сейчас запускаются автоматически. Чтобы добавить в автозагрузку ubuntu еще одно приложение, нажмите кнопку «Добавить» :

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

В команде можно указывать параметры, если это нужно. Еще можно заполнить поле «Описание» , но это уже необязательно. Если вам нужна определенная программа из главного меню, но вы не знаете где ее найти и как пишется ее команда, можно посмотреть ее в том же меню. Но для этого нам нужно сначала установить утилиту «Главное меню» из центра приложений:

Здесь вам нужно обратить внимание на строку «Команда» , скопируйте ее и можете использовать для автозагрузки.

Следующий способ - это папка автозагрузки. Она находится по адресу ~/.config/autostart. По сути, это тот же самый способ, только он может выполняться без графического интерфейса. Когда вы настраиваете автозагрузку через приложение, то в этой папке создаются файлы настроек с именем desktop. Вот, например:

Напоминаю, что для того, чтобы посмотреть скрытые файлы нужно нажать сочетание клавиш Ctrl+H. Теперь попытаемся создать новый конфигурационный файл для еще одной программы. Вот таким будет его синтаксис:


Type = Application
Name = имя_нового_пункта
Exec = команда
Icon = полный_путь_к_иконке
Comment = комментарий
X-GNOME-Autostart-enabled = true

Для примера, сделаем файл для запуска плеера VLC, он будет выглядеть вот так:

vi ~/.config/autostart/vlc.desktop


Type=Application
Name=VLC
Exec=vlc
Icon=/usr/share/icons/hicolor/16x16/apps/vlc.png
Comment=VLC Media Player
X-GNOME-Autostart-enabled=true

Готово, и самое интересное, что если вы откроете приложение автозагрузки. То там тоже появится этот пункт. Это такой способ настройки без графического интерфейса.

ВЫВОДЫ

В этой небольшой статье мы рассмотрели как настраивается автозагрузка программ ubuntu различными способами - через графический интерфейс и терминал. Вы можете использовать эти знания, чтобы сделать работу в вашей системе более удобной. Даже несмотря на то, что Ubuntu перешла на Gnome, автозагрузка в ubuntu 16.04 и сейчас выглядят практически одинаково. Если у вас остались, вопросы, спрашивайте в комментариях!

Похожие записи:


Выпуск WordPress 5.3 улучшает и расширяет представленный в WordPress 5.0 редактор блоков новым блоком, более интуитивным взаимодействием и улучшенной доступностью. Новые функции в редакторе […]

После девяти месяцев разработки доступен мультимедиа-пакет FFmpeg 4.2, включающий набор приложений и коллекцию библиотек для операций над различными мультимедиа-форматами (запись, преобразование и […]

  • Новые функции в Linux Mint 19.2 Cinnamon

    Linux Mint 19.2 является выпуском с долгосрочной поддержкой, который будет поддерживаться до 2023 года. Он поставляется с обновленным программным обеспечением и содержит доработки и множество новых […]

  • Вышел дистрибутив Linux Mint 19.2

    Представлен релиз дистрибутива Linux Mint 19.2, второго обновления ветки Linux Mint 19.x, формируемой на пакетной базе Ubuntu 18.04 LTS и поддерживаемой до 2023 года. Дистрибутив полностью совместим […]

  • Доступны новые сервисные релизы BIND, которые содержат исправления ошибок и улучшения функций. Новые выпуски могут быть скачано со страницы загрузок на сайте разработчика: […]

    Exim — агент передачи сообщений (MTA), разработанный в Кембриджском университете для использования в системах Unix, подключенных к Интернету. Он находится в свободном доступе в соответствии с […]

    После почти двух лет разработки представлен релиз ZFS on Linux 0.8.0, реализации файловой системы ZFS, оформленной в виде модуля для ядра Linux. Работа модуля проверена с ядрами Linux c 2.6.32 по […]

  • В WordPress 5.1.1 устранена уязвимость, позволяющая получить контроль над сайтом
  • Комитет IETF (Internet Engineering Task Force), занимающийся развитием протоколов и архитектуры интернета, завершил формирование RFC для протокола ACME (Automatic Certificate Management Environment) […]

    Некоммерческий удостоверяющий центр Let’s Encrypt, контролируемый сообществом и предоставляющий сертификаты безвозмездно всем желающим, подвёл итоги прошедшего года и рассказал о планах на 2019 год. […]

  • Вышла новая версия Libreoffice — Libreoffice 6.2
  • После запуска компьютера, как правило, нам приходится запускать некоторые программы. которыми мы пользуемся чаще всего. Также после запуска системы нам может понадобиться выполнить какие-либо специфичные действия, например, создать нужные файлы или установить некоторые параметры. Очень неудобно делать это вручную. Для решения таких задач существует автозагрузка.

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

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

    Есть процессы, которые система инициализации, например, systemd, запускает по умолчанию, но также вы можете настроить чтобы она запускала нужные вам процессы. Также многими дочерними процессами выполняются файлы скриптов или имеется та или иная возможность запускать необходимые вам программы. Такая возможность есть и у большинства окружений рабочего стола.

    Рассмотрим основные уровни автозагрузки которые вы можете использовать:

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

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

    sudo vi /boot/grub2/grub.cfg

    linux /vmlinuz-4.8.0-22-generic root=/dev/mapper/systems-ubuntu ro quiet init=/bin/bash

    Но, обычно, удобнее изменить это значение временно, в меню Grub. Читайте подробнее об этом в статье . Так не выполняется автозагрузка программы linux, но, тем не менее, иногда может быть полезно.

    Чаще всего, когда говорится автозагрузка Linux, подразумевается именно автозагрузка сервисов с помощью системы инициализации. В systemd очень продвинутая система . Здесь поддерживается разрешение зависимостей, параллельный запуск, отсрочка запуска и перезапуск при ошибке. В терминологии Systemd все запускаемые программы представлены файлами юнитов, в каждом юните описаны параметры программы, ее исполняемый файл, а также дополнительные требования к запуску.

    Для добавления или удаления служб из автозапуска используется команда systemctl. Чтобы добавить службу в автозапуск выполните:

    sudo systemctl enable имя_службы

    А чтобы отключить ее автозапуск linux:

    sudo systemctl disable имя_службы

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

    sudo systemctl enable apache

    Также вы можете проверить добавлена ли уже служба в автозагрузку:

    sudo systemctl is-enabled httpd

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

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

    systemctl list-unit-files | grep enabled

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

    Для этого достаточно создать простой юнит-файл и добавить его в автозагрузку, как любой другой сервис. Сначала создадим этот файл:

    sudo vi /lib/systemd/system/runscript.service


    Description=My Script Service
    After=multi-user.target


    Type=idle
    ExecStart=/usr/bin/local/script.sh


    WantedBy=multi-user.target

    В секции Unit мы даем краткое описание нашему файлу и говорим с помощью опции After , что нужно запускать этот скрипт в многопользовательском режиме (multi-user). Секция Service самая важная, здесь мы указываем тип сервиса - idle , это значит, что нужно просто запустить и забыть, вести наблюдение нет необходимости, а затем в параметре ExecStart указываем полный путь к нашему скрипту.

    Осталось выставить правильные права:

    sudo chmod 644 /lib/systemd/system/runscript.service

    Затем обновить конфигурацию и добавить в автозагрузку Linux новый скрипт:

    sudo systemctl daemon-reload
    $ sudo systemctl enable myscript.service

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

    sudo chmod u+x /usr/local/bin/script

    В параметрах мы передаем утилите адрес файла скрипта. Исполняемость - это обязательный параметр для всех способов.

    Часто, в легких окружениях рабочего стола и оконных менеджеров для автозагрузки программ используется автозагрузка на уровне X сервера. Все запускаемые, таким образом, скрипты будут стартовать после запуска X сервера. Чтобы настроить такую автозагрузку Linux вам будет достаточно добавить путь к нужному скрипту в файл ~/.xinitrc или /etc/X11/xinit/xinitrc. Синтаксис добавляемой строки таков:

    exec путь_к_скрипту &

    Если файла ~/.xinitrc еще не существует, то его нужно создать:

    cp /etc/X11/xinit/xinitrc ~/.xinitrc

    Затем, чтобы добавить в автозагрузку linux скрипт, отредактируйте файл так, как вам нужно. Например, будем запускать Firefox:

    exec /usr/bin/firefox &

    Такие мощные окружения рабочего стола как Gnome и KDE имеют свои приложения для автозагрузки. Например, в Gnome программа называется "Запускаемые автоматически приложения" . Вы можете запустить ее из главного меню системы:

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

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

    Тут вам нужно заполнить три поля:

    • Имя - произвольное имя для команды, по которому вы сможете ее найти;
    • Команда - полный путь к исполняемому файлу программы;

    Создаём пустой файл.

    Первой строкой пишем:

    #!/bin/sh

    Данная строка указывает, какую командную оболочку необходимо использовать. Дальше свои команды.

    Сохраним его под оригинальным названием (чтоб не совпадал с уже существующими) в каталоге /usr/sbin/.

    Чтобы скрипт запускался при загрузке, необходимо прописать его в файле /etc/rc.local до строчки exit 0. Если у вас не существует данного файла, создайте его и вставьте в него следующее содержимое:

    #!/bin/sh -e #Здесь вставляем строку с указанием вашего скрипта. /usr/sbin/mescripts exit 0

    Немного более сложный способ

    Позволяет задать последовательность загрузки и поведение скрипта при разных runlevel"ах.

    Изучаем /etc/init.d/skeleton , на его основе создаем скрипт /etc/init.d/my_script , которым будет запускаться/останавливаться наше приложение.

    В этих директориях лежат скрипты остановки сервисов:

    /etc/rc0.d/ /etc/rc1.d/ /etc/rc6.d/

    в этих - скрипты запуска сервисов:

    /etc/rc2.d/ /etc/rc3.d/ /etc/rc4.d/ /etc/rc5.d/

    Изучаем их на предмет последовательности (чем меньше первая цифра в начале скрипта, тем раньше запускается/останавливается приложение). Это может быть критично, если ваше приложение будет зависит от каких-то сервисов.

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

    Sudo update-rc.d my_script start 70 2 3 4 5 . stop 20 0 1 6 .

    Здесь я определил, что мой скриптик должен запускаться попозже остальных(70), и останавливаться пораньше(20). Цифры 2 3 4 5 0 1 6 означают уровни загрузки.

    Если что-то не понравилось - все можно удалить

    Sudo update-rc.d -f my_script remove

    Подробности в man update-rc.d .

    Выполнение скрипта при включении/отключении сети

    Есть директория /etc/network/ с поддиректориями if-down.d , if-pre-up.d , if-post-down.d , if-up.d . Если разместить скрипт в одной из этих поддиректорий, то он будет выполняться соответственно при выключении, перед включением, после выключения или при включении сети.

    Другой способ - указать в файле /etc/network/interfaces одну из следующих директив: up , pre-up , post-up , down , pre-down , post-down . Например, строка

    Post-up /path/to/script.sh

    после включения сети выполнит скрипт script.sh . Подробнее можно почитать в man interfaces .

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

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

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

    Как работает автозагрузка?

    Чтобы понять как работает автозагрузка, сначала нужно вспомнить, что происходит во время процесса загрузки Linux . Как только ядро завершит свою инициализацию и будет готово к дальнейшей работе, оно передаст управление системе инициализации. Система инициализации - это основной процесс, именно он запускает все другие процессы в системе.

    Есть процессы, которые система инициализации, например, systemd, запускает по умолчанию, но также вы можете настроить чтобы она запускала нужные вам процессы. Также многими дочерними процессами выполняются файлы скриптов или имеется та или иная возможность запускать необходимые вам программы. Такая возможность есть и у большинства окружений рабочего стола.

    Рассмотрим основные уровни автозагрузки которые вы можете использовать:

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

    Автозагрузка на уровне ядра

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

    $ sudo vi /boot/grub2/grub.cfg

    linux /vmlinuz-4.8.0-22-generic root=/dev/mapper/systems-ubuntu ro quiet init=/bin/bash

    Но, обычно, удобнее изменить это значение временно, в меню Grub. Читайте подробнее об этом в статье параметры ядра Linux . Так не выполняется автозагрузка программы linux, но, тем не менее, иногда может быть полезно.

    Автозагрузка в системе инициализации

    Чаще всего, когда говорится автозагрузка Linux, подразумевается именно автозагрузка сервисов с помощью системы инициализации. В systemd очень продвинутая система управления службами . Здесь поддерживается разрешение зависимостей, параллельный запуск, отсрочка запуска и перезапуск при ошибке. В терминологии Systemd все запускаемые программы представлены файлами юнитов, в каждом юните описаны параметры программы, ее исполняемый файл, а также дополнительные требования к запуску.

    Для добавления или удаления служб из автозапуска используется команда systemctl. Чтобы добавить службу в автозапуск выполните:

    $ sudo systemctl enable имя_службы

    А чтобы отключить ее автозапуск linux:

    $ sudo systemctl disable имя_службы

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

    $ sudo systemctl enable apache

    Также вы можете проверить добавлена ли уже служба в автозагрузку:

    $ sudo systemctl is-enabled httpd

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

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

    $ systemctl list-unit-files | grep enabled

    Автозагрузка скриптов в Linux

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

    Для этого достаточно создать простой юнит-файл и добавить его в автозагрузку, как любой другой сервис. Сначала создадим этот файл:

    $ sudo vi /lib/systemd/system/runscript.service


    Description=My Script Service
    After=multi-user.target


    Type=idle
    ExecStart=/usr/bin/local/script.sh


    WantedBy=multi-user.target

    В секции Unit мы даем краткое описание нашему файлу и говорим с помощью опции After , что нужно запускать этот скрипт в многопользовательском режиме (multi-user). Секция Service самая важная, здесь мы указываем тип сервиса - idle , это значит, что нужно просто запустить и забыть, вести наблюдение нет необходимости, а затем в параметре ExecStart указываем полный путь к нашему скрипту.

    Осталось выставить правильные права:

    $ sudo chmod 644 /lib/systemd/system/runscript.service

    Затем обновить конфигурацию и добавить в автозагрузку Linux новый скрипт:

    $ sudo systemctl daemon-reload
    $ sudo systemctl enable myscript.service

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

    $ sudo chmod u+x /usr/local/bin/script

    В параметрах мы передаем утилите адрес файла скрипта. Исполняемость - это обязательный параметр для всех способов.

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

    Часто, в легких окружениях рабочего стола и оконных менеджеров для автозагрузки программ используется автозагрузка на уровне X сервера. Все запускаемые, таким образом, скрипты будут стартовать после запуска X сервера. Чтобы настроить такую автозагрузку Linux вам будет достаточно добавить путь к нужному скрипту в файл ~/.xinitrc или /etc/X11/xinit/xinitrc. Синтаксис добавляемой строки таков:

    exec путь_к_скрипту &

    Если файла ~/.xinitrc еще не существует, то его нужно создать:

    $ cp /etc/X11/xinit/xinitrc ~/.xinitrc

    Затем, чтобы добавить в автозагрузку linux скрипт, отредактируйте файл так, как вам нужно. Например, будем запускать Firefox:

    exec /usr/bin/firefox &

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

    Такие мощные окружения рабочего стола как Gnome и KDE имеют свои приложения для автозагрузки. Например, в Gnome программа называется "Запускаемые автоматически приложения" . Вы можете запустить ее из главного меню системы:

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

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

    Тут вам нужно заполнить три поля:

    • Имя - произвольное имя для команды, по которому вы сможете ее найти;
    • Команда - полный путь к исполняемому файлу программы;


    Понравилась статья? Поделиться с друзьями: