Добавление приложения в автозагрузку Linux (как запускать программу автоматически при старте ОС Linux)

Улучшения

Что такое inittab

Собственно inittab — это файл, в котором можно посмотреть/изменить уровень загрузки операционной системы в /etc/inittab. Давайте сломаем это

В Linux существует 7 уровней загрузки операционной системы. В нашем случае нулевой уровень — режим восстановления, первый — одиночный режим запуска от имени root. 2-5 загрузка в многопользовательском режиме (т.е обычный режим). Отличаются они только набором стартовых скриптов. Уровень 6 — это перезапуск. Скрипты берутся из каталогов, перечисленных в inittab. Наша система по умолчанию запускается на уровне 5, давайте посмотрим, что находится в каталоге /etc/init.d/rc 5:

l6kVIhbeE60.jpg

Скрипты в этом каталоге выполняются при каждом запуске системы. А если быть точнее, то это просто символические ссылки на сами скрипты. Первая буква означает S(start) K(kill or stop) для изменения порядка скриптов, меняется число, т.е скрипты запускаются в возрастающем порядке. Можно изменить вручную, но рекомендуется менять через «update-rc.d»

Systemd: управление автозагрузкой служб в Linux

Самые популярные современные популярные дистрибутивы Linux (CentOS 7, RHEL, Debian, Fedora и Ubuntu) используют systemd в качестве демона автозагрузки вместо init.d. Systemd — это системный и сервисный менеджер Linux, используемый для запуска и управления другими демонами во время их работы с использованием юнит-файлов из /etc/systemd/system (init.d использовал сценарии из каталога /etc/init.d/). Systemd позволяет распараллелить запуск служб во время загрузки ОС, тем самым ускорив запуск.

Команда systemctl используется для управления системой.

Во-первых, после того, как система загрузится, мы проверим список устройств, добавленных на данный момент в systemd:

список устройств systemctl

список устройств systemctl

Список файлов устройства можно получить командой:

systemctl list-unit файлы

Эта команда выведет список всех доступных файлов устройств (независимо от того, были ли они загружены в systemd после загрузки ОС или нет).

Чтобы получить список активных служб и их состояния, запустите:

# systemctl список устройств -t сервис

Следующая команда выведет список устройств, которые systemd загрузил или пытался загрузить. Поскольку некоторые устройства могут стать неактивными после загрузки, использование флага —all даст вам полный список.

● exim служба не найдена неактивная мертвая служба exim firewalld.service загружена активная работающий брандмауэр — динамический демон брандмауэра защищенная электронная почта загружена активная работающая Getty на tty1

● ip6tables.service не найдена неактивная мертвая ip6tables.service

● ipset.service не найдена неактивная мертвая ipset служба

● iptables .service не найдена неактивна мертва iptables.service Поднять/отключить сеть

● NetworkManager-wait-online.service не найдена неактивна мертва

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

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

  • —state — используется для определения состояния Load, Active, Sub daemon
  • —type — позволяет фильтровать устройства по их типу.

Примеры:

systemctl list-units —all —state=active — будут отображаться только активные юниты

systemctl list-units —type=service — Выводит список единиц, являющихся службой.

systemctl list-units --type=services список служб в centos

Добавление сервиса в systemd

Systemd использует специальный синтаксис для управления службами. После имени сервера в конце необходимо указать .service. Например:

systemctl enable nginx.service — команда добавит веб-сервер nginx в автозагрузку

Эта команда создаст символическую ссылку на копию файла, указанного в сервисной команде, в каталоге автозапуска systemd.

# systemctl включить nginx.service

Создана символическая ссылка из /etc/systemd/system/multi-user.target.wants/nginx.service в /usr/lib/systemd/system/nginx.service. Вывод этой команды показывает, в каком каталоге находится символическая ссылка на файл службы созданный.

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

статус systemctl nginx.service

При отправке обратите внимание на строку:

Загружено: загружено (/usr/lib/systemd/system/nginx.service; включено; defaultprovider: отключено)

Значение активировано означает, что данная служба загружается автоматически (добавляется в автозагрузку). Если сервис не загружается автоматически, здесь будет указано отключение.

Удаление сервиса из systemd

Можно убрать службу из автозагрузки, чтобы она не запускалась после старта Linux (при этом не удаляя саму службу с сервера). Чтобы удалить службу из автозагрузки, выполните команду:

systemctl отключить нужную_службу

Чтобы убрать nginx из автозагрузки, например, запустите:

# systemctl отключить nginx.service

Удалена символическая ссылка /etc/systemd/system/multi-user.target.wants/nginx.service

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

# systemctl включен sshd

Systemd: маскировка юнитов

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

маска systemctl nginx.service

И после этого вообще не запускается ни вручную, ни после перезагрузки ОС:

# маска systemctl nginx.service

Создал символическую ссылку из /etc/systemd/system/nginx.service в /dev/null.

# перезапуск службы nginx

Перенаправление на /bin/systemctl restart nginx.service Не удалось перезапустить nginx.service: устройство замаскировано.

Снять маску можно командой:

# systemctl разоблачить nginx.service

Удалена символическая ссылка /etc/systemd/system/nginx.service.

Если после маскирования сервиса вы проверите файлы устройства, то увидите, что сервис помечен как замаскированный (маскированное состояние):

маскировка службы systemctl

Таким простым способом можно уберечь себя от удаления службы, даже если она не удаляется при запуске systemd.

Создание скрипта в init.d для запуска во время инициализации системы

Сначала создайте скрипт и скопируйте его в каталог /etc/init.d/ удобным для вас способом, затем сделайте его исполняемым с помощью команды:

$sudo chmod +x /etc/init.d/имя_сценария

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

$sudo update-rc.d имя сценария по умолчанию

Скрипт запустится во время инициализации системы.

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

$sudo update-rc.d -f имя_скрипта удалить

Вариант 1

Так…

Начнем с того, что совет банален — откройте настройки приложения, которое нужно добавить в автозагрузку. Не исключено, что среди параметров будет заветный «флаг», позволяющий запускать приложение при старте системы. Смотрите скриншот ниже для примера.

Примечание: в некоторых системах Linux такая опция в настройках приложения может ничего не делать… (т.е приложение не будет запускаться при старте ОС).

Вариант 2

Теперь несколько слов о панелях управления дистрибутивов Linux, которые я рекомендовал…

Linux Mint

В этой раздаче все гораздо проще, чем просто «просто».

Сначала откройте меню ПУСК/системные настройки и перейдите на вкладку «Автозагрузка».

Затем нажмите на «плюс» и выберите нужное приложение из списка. Это все… ✌

Elementary OS

Здесь все сделано почти так же, как и в Linux Mint.

Сначала откройте настройки системы и перейдите на вкладку «Приложения».

Открыв меню «Автозапуск», нажмите на «плюс» и выберите нужное приложение.

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

Ubuntu

В Ubuntu также есть специальное программное обеспечение для этой задачи: вам нужно перейти на вкладку «Система → Параметры → Запуск приложений».

Чтобы добавить свою программу, нажмите кнопку «Добавить», как в моем примере. Вы должны указать имя, команду (подробнее об этом позже) и описание.

После этого нужно указать нужный исполняемый файл (программу) — обычно они копируются в каталог /usr/bin (для ПО, запускаемого от имени администратора — /usr/sbin). В редких случаях может быть задействован каталог /usr/opt (один пример ниже).

Deepin

Этот дистрибутив (на мой взгляд) по удобству использования превосходит предыдущие!

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

Как добавить метку на ведомый стол или программу для автоматической загрузки

Разумеется, чтобы исключить приложение из автозагрузки, нужно проделать обратную операцию: также нажать правой кнопкой мыши на иконку…

Теперь на приложении специальная иконка — оно запустится вместе с системой (Deepin)

Загрузка с помощью rc.local после загрузки системы

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

$sudo chmod +x /etc/init.d/имя_сценария

Затем отредактируйте файл rc.local любым текстовым редактором, например nano:

$sudo нано /etc/rc.local

Изначально скрипт rc.local пуст и содержит только:

#!/bin/sh -e # # rc.local # # Этот скрипт запускается в конце каждого уровня многопользовательского запуска. # Убедитесь, что скрипт «выйдет из 0» в случае успеха или # из другого значения в случае неудачи. # # Чтобы включить или отключить этот скрипт, просто измените # биты. # # По умолчанию этот скрипт ничего не выводит 0

Напишите полный путь к скрипту перед строкой выхода 0 и сохраните файл.

Как упоминалось в комментариях в справочнике rc.local, мы делаем его исполняемым (хотя во многих дистрибутивах он изначально исполняемый):

$sudo chmod +x /etc/rc.local

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

Однако в более новых версиях Ubuntu (например, Ubuntu 18.04) в каталоге /etc нет файла rc.local, и его необходимо создать и сделать исполняемым:

$ sudo touch /etc/rc.local $ sudo chmod +x /etc/rc.local

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

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

Как мы уже поняли, каталоги /etc/rc0-6.d/* содержат символические ссылки на скрипты. Где числа от 0-6 — это уровень загрузки inittab или systemd. Мы можем изменить порядок запуска вручную, удалить и добавить. Systemd изначально просматривает все файлы и пытается инициализировать их при запуске системы. Теперь разберем управление через команды:
chkconfig — нужен для просмотра сервисов (программ). Поддерживает режим изменения для всех уровней нагрузки.

update-rc.d — используется для запуска/остановки скриптов при запуске/выключении системы. Собственно, через него мы и будем менять автозапуск графической оболочки KDE (kdm). Так уж получилось, что KDE включен для уровней 2-5 по умолчанию.

При старте системы отключаю 2-4 уровень загрузки и проверяю что у меня стоит 3-й уровень загрузки

J2x30PsUJ_E.jpg

Я перезагружаюсь и вижу прибыль сообщения консоли tty

По сути, это не более чем консоль. Мы можем переключаться между вкладками.
CTRL+ALT+(F1–F6)

команда startx запустит графику KDE.

Автозагрузка приложений в Linux Mint 17

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

линуксминт0.png

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

линуксминт1-1.png

Чтобы добавить новое приложение, нажмите кнопку «Добавить»:

линуксминт2-1.png

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

линуксминт4-1.png

В опции из меню выберите одну из доступных программ и нажмите кнопку добавить:

линуксминт5-1.png

Например, Gparted, а сейчас автозагрузка в linux mint для Gparted уже настроена:

линуксминт6-1.png

Но если программы нет в списке, например, VLC, мы можем использовать тот же диалог, что и в Ubuntu:

линуксминт3-1.png

В открывшемся окне нужно ввести название приложения, оно ни на что не влияет, а нужно только знать, почему этот пункт добавлен в автозагрузку Linux Mint:

линуксминт7-1.png

Затем выберите команду программы. Необходимо указать полный путь к исполняемому файлу. Если помните — просто введите текстовое поле, но надежнее будет нажать кнопку Обзор и найти его в файловой системе.

Обычно исполняемые файлы хранятся в папке /bin или /usr/bin. Выбрав нужный файл, нажмите кнопку «Открыть:

линуксминт8-1.png

При необходимости здесь также можно ввести задержку запуска. Осталось нажать на кнопку Добавить:

линуксминт9-1.png

Все, теперь ваше приложение добавлено в автозагрузку Linux Mint 17 и будет запускаться при каждом запуске системы.

Читайте также: ТОП-10 лучших программ для записи игр со звуком на ПК без потери fps

Настройка автозагрузки

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

sudo sed -i ‘s/NoDisplay=true/NoDisplay=false/g’ /etc/xdg/autostart/*.desktop

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

линуксминт11-1.png

Оцените статью
Всё о компьютерах
Adblock
detector