CentOS 6
Здесь за автозагрузку демонов/программ/служб отвечает содержимое каталога /etc/rc.local. Управление этими процессами идет через команду chkconfig, которая кроме стандартных функций добавления/удаления служб с автозагрузки имеет уровни выполнения команды (уровни запуска). Уровни запуска — режимы работы операционной системы, каждый с каких несет в себе установленное направление функционала и ограничений. Всего уровней существует семь, которые нумеруются от 0 до 6.
0 уровень — прекращение работы системы.
1 уровень — однопользовательский режим, доступен только пользователю root.
2 уровень — многопользовательский режим, возможно работа с нескольких терминалов, вход уже как обычные пользователи.
3 уровень — также многопользовательский режим, настройка сетевых служб.
4 уровень — не используется.
5 уровень — включение графической подсистемы X11, для возможности использования графического интерфейса вместо командной строки.
6 уровень — перезагрузка системы.
вывод на экран списка всех сервисов
Здесь после использования команды на экране в консоли возле номеров уровней будут идти индикаторы on -включен, off — выключен, что определяет на каких уровнях работает или нет указанный сервис.
добавление сервиса в автозагрузку
Где после —level указываются номера уровней (слитно) на которых будет доступен сервис.
CentOS 6
Здесь за автозагрузку демонов/программ/служб отвечает содержимое каталога /etc/rc.local. Управление этими процессами идет через команду chkconfig, которая кроме стандартных функций добавления/удаления служб с автозагрузки имеет уровни выполнения команды (уровни запуска). Уровни запуска — режимы работы операционной системы, каждый с каких несет в себе установленное направление функционала и ограничений. Всего уровней существует семь, которые нумеруются от 0 до 6.
0 уровень — прекращение работы системы.
1 уровень — однопользовательский режим, доступен только пользователю root.
2 уровень — многопользовательский режим, возможно работа с нескольких терминалов, вход уже как обычные пользователи.
3 уровень — также многопользовательский режим, настройка сетевых служб.
4 уровень — не используется.
5 уровень — включение графической подсистемы X11, для возможности использования графического интерфейса вместо командной строки.
6 уровень — перезагрузка системы.
вывод на экран списка всех сервисов
Здесь после использования команды на экране в консоли возле номеров уровней будут идти индикаторы on -включен, off — выключен, что определяет на каких уровнях работает или нет указанный сервис.
добавление сервиса в автозагрузку
Где после —level указываются номера уровней (слитно) на которых будет доступен сервис.
Автозагрузка X сервера
Часто, в легких окружениях рабочего стола и оконных менеджеров для автозагрузки программ используется автозагрузка на уровне X сервера. Все запускаемые, таким образом, скрипты будут стартовать после запуска X сервера. Чтобы настроить такую автозагрузку Linux вам будет достаточно добавить путь к нужному скрипту в файл ~/.xinitrc или /etc/X11/xinit/xinitrc. Синтаксис добавляемой строки таков:
exec путь_к_скрипту &
Если файла ~/.xinitrc еще не существует, то его нужно создать:
Затем, чтобы добавить в автозагрузку linux скрипт, отредактируйте файл так, как вам нужно. Например, будем запускать Firefox:
Готово. Осталось сохранить изменения. При следующем запуске X сервера сработает автозапуск Linux и выполняется эта команда. Таким же способом может выполняться автозапуск приложений linux.
Как убрать приложения из автозагрузки в Android.
Вопрос как отключить автозагрузку приложений на Андроид часто беспокоит тех пользователей смартфонов, телефонов и планшетов, которые не хотят видеть десятки активных приложений, съедающих оперативную память и заряд батареи. Удаление некоторых ненужных приложений из автозагрузки позволяет несколько ускорить работу системы в целом и увеличить длительность работы от аккумулятора.
Отключение автозагрузки приложений при старте Андроид, помогает освободить оперативную память и исправить такую ошибку как «не удалось установить приложение в папку по умолчанию» и многие другие.
https://youtube.com/watch?v=v5STk83nJcM
Как отключить автозагрузку приложений в ОС Android? Решить проблему можно двумя способами: простым для новичков и сложным для опытных пользователей знакомых с рутированием Андроида и настройкой системы. Учтите, что первый вариант работает не на всех устройствах.
Простой способ убрать программы из автоматической загрузки.
Зайдите в настройку приложений и выберите вкладку «в работе» или «активные». Вы увидите список программ, которые запущены в настоящий момент. Выберите то приложение, которое не должно по вашему мнению работать в фоновом режиме, щелкните по его названию и нажмите кнопку «остановить».
Если кнопка не активна, сначала нажмите «стереть данные». После остановки перезагрузите устройство. Если только что отключенная программа загрузилась, значит нужно переходить к более сложному варианту. Как я говорил выше такой способ может не сработать, тогда остаётся только вариант с рутом.
Удаление приложений из автозагрузки позволяет сэкономить заряд батареи, если аккумулятор на Андроид быстро разряжается и медленно заряжается.
Отключение автозагрузки с помощью Xposed Framework.
Это способ для продвинутых пользователей Android. Если вы никогда не работали с root-правами и не изменяли системные настройки прошивки и приложений, рекомендую почитать об этом Интернете подробнее. Неосторожные действия (например, случайное удаление системного файла или отключение из автозагрузки графического интерфейса) может привести к поломке смартфона и потере его работоспособности.
Для начала нужно получить рут-права на изменение системных файлов ОС Андроид. Сделать это можно в одном из десятков приложений. Самое популярное — Framaroot. Если ваше устройство невозможно рутировать (новая прошивка, редкий телефон), попробуйте сделать это через компьютер с помощью программы Kingo Android Root. Список софта, который может помочь получить root-доступ систему:
- KingRoot;
- CF-Auto-Root;
- Towelroot;
- Root Zhushou;
- 360 Root;
- Romaster SU;
- Baidu Root;
- Root Genius;
- DingDong Root;
- Root Dashi.
После получения root-доступа скачайте и установите Xposed Framework. Это инструмент, который позволяет вносить существенные изменения в работу ядра и установленных приложений.
После установки нужно внутри Xposed скачать модуль Booting Apps Manager. Для этого нажмите кнопку «download», найдите в списке дополнение с нужным названием и щелкните «install».
Аналогичный модуль Boot Manager можно найти в магазине приложений Google Play и установить его оттуда, но в таком случае вам всё равно придётся зайти в настройку модулей Xposed и активировать его.
На экране появится отдельный значок для работы с Booting Apps Manager.
Перезагрузите гаджет и войдите в приложение. В открывшемся списке программ выберите те, которые хотите убрать из автозагрузки.
После этого нужно выключить и включить устройство, чтобы проверить результат. Снова зайдите в настройку приложениями, выберите вкладку с активными и проверьте, загрузилась ли программа.
Если нет, значит способ работает. В противном случае вы допустили ошибку или отключение автозагрузки с помощью Xposed Framework не работает на вашем девайсе. Этот вариант маловероятен, поэтому просто попробуйте повторить процедуру заново.
Автозагрузка в системе инициализации
Чаще всего, когда говорится автозагрузка Linux, подразумевается именно автозагрузка сервисов с помощью системы инициализации. В systemd очень продвинутая система управления службами. Здесь поддерживается разрешение зависимостей, параллельный запуск, отсрочка запуска и перезапуск при ошибке. В терминологии Systemd все запускаемые программы представлены файлами юнитов, в каждом юните описаны параметры программы, ее исполняемый файл, а также дополнительные требования к запуску.
Для добавления или удаления служб из автозапуска используется команда systemctl. Чтобы добавить службу в автозапуск выполните:
А чтобы отключить ее автозапуск linux:
Например, если вы хотите добавить в автозагрузку Apache, то нужно выполнить:
Также вы можете проверить добавлена ли уже служба в автозагрузку:
Если вы не знаете точное имя файла сервиса, но знаете его первую букву, то можно использовать автодополнение, как и в любом другом месте терминала с помощью кнопки Tab:
Также вы можете посмотреть все сервисы, которые были добавлены в автозагрузку с помощью команды:
Systemd: управление автозагрузкой служб в Linux
В большистве популярных современных популярных дистрибутивов Linux (CentOS 7, RHEL, Debian, Fedora и Ubuntu) в качестве демона автозагрузки вместо init.d используется systemd. Systemd – менеджер системы и служб Linux, используется для запуска других демонов и управления ими в процессе работы, использует unit-файлы из /etc/systemd/system (init.d использовал скрипты из каталога /etc/init.d/). Systemd позволяет распараллелить запуск служб в процессе загрузки ОС, тем самым ускоряя запуск.
Для управления system используется команда systemctl.
Для начала, после загрузки системы, мы проверим список юнитов, которые в данный момент добавлены в systemd:
Список unit-файлов можно получить командой:
Данная команда отобразит все доступные юнит-файлы (не зависимо от того, были они загружены в systemd после загрузки ОС или нет).
Чтобы вывести список активных сервисов и их состояние, выполните:
# systemctl list-units -t service
Следующая команда выведет список юнитов, которые загрузил или пытался загрузить systemd. Так как после запуска некоторые юниты могут стать неактивными, с помощью флага —all вы получите полный список.
# systemctl list-units –all
Как видим из списка, здесь отображаются даже сервисы, которые не были найдены на диске «not-found».
Использую данную команду, вы можете добавить и другие флаги, например:
- —state — используется для определения состояния демона Load, Active, Sub
- —type — позволяет фильтровать юниты по их типу.
systemctl list-units –all –state=active — выведет список только активных юнитов
systemctl list-units —type=service — выведет список юнитов, которые являются сервисом.
Добавление сервиса в systemd
Для управления сервисами в systemd используется особый синтаксис. После имени серверсв в конце нужно указывать .service. Например:
systemctl enable nginx.service – команда добавит в автозагрузку веб-сервер nginx
Данная команда создаст символическую ссылку на копию файла, указанного в команде сервиса, в директории автозапуска systemd.
# systemctl enable nginx.service
Чтобы посмотреть добавлен тот или иной сервис в автозагрузку, можно проверить его статус:
systemctl status nginx.service
При выводе нужно обратить внимание на строку:
Значение enabled означает что данный сервис загружается автоматически (добавлен в автозагрузку). Если сервис не загружается автоматом, здесь буде указано disabled.
Удаление сервиса из systemd
Вы можете удалить сервис из автозагрузки, чтобы он не запускался после старта Linux (при этом сам сервис с сервера не удаляется). Чтобы удалить сервис из автозагрузки, выполните команду:
systemctl disable нужный_сервис
Например, чтобы удалить из автозагрузки nginx, выполните:
# systemctl disable nginx.service
После выполнения команды, симлинк на файл сервиса будет удален из директории systemd. Можно проверить, есть ли юнит в автозагрузке:
# systemctl is-enabled sshd
Systemd: маскировка юнитов
В моей практике встречались «вредные» сервисы, которые после удаления их из автозагрузки, все равно там оставались и запускались после рестарта ОС. Чтобы решить этот вопрос, можно замаскировать сервис:
systemctl mask nginx.service
И после этого, он вообще не будет запускаться, ни вручную, ни после перезагрузки ОС:
# systemctl mask nginx.service
# service nginx restart
Снять маску можно командой:
# systemctl unmask nginx.service
Если после маскировки сервиса, вы проверите юнит-файлы, то увидите, что сервис помечен как замаскированный (состояние masked):
Таким нехитрым способом, можно избавить себя от удаления сервиса, даже если он не удаляется из автозагрузки systemd.
Как добавить программы в автозагрузку ubuntu?
Для автоматического запуска программ в xubuntu для этого можно использовать приложение «Сеансы и запуск», которое лучше запускать с привилегиями sudo. Это позволит избежать появления ошибки:
«Не удалось записать файл autostart/имя программы, которую добавляют в автозапуск» (в xfce4).
Возникновение подобных ошибок связано с ограничением прав текущего пользователя на редактирование меню autostart (каталог ~/.config/autostart/).
Проблема с редактированием автоматически загружаемых приложений с помощью утилиты «Сеансы и запуск» (Session and Startup):
sudo xfce4-session-settings
Затем добавляют нужные программы в автозапуск через меню «Добавить». К сожалению, консольные программы таким образом автоматически не запускаются.
Для автоматического запуска майнеров можно использовать опцию сохранения сеанса, которая включается в окне выхода из xubuntu при выходе из системы. При этом программы разгона нормально не запускаются. Процесс настройки автозапуска майнеров и программ разгона в ubuntu рассматривается в отдельной статье.
Далее в качестве справки приводится информация по порядку запуска терминальных программ с правами админа без ввода пароля.
Использование ACL
Выше мы рассмотрели базовый способ присоединения агента к кластеру. Однако, если мы включили проверку подлинности на стороне сервера, необходимо создать политику для агентов и сделать соответствующие настройки на клиентских нодах.
На сервере переходим в каталог с конфигурациями консула и создаем файл с политикой:
cd /etc/consul.d
vi agent-policy.txt
node_prefix «» {
policy = «write»
}
node «» {
policy = «write»
}
service_prefix «» {
policy = «write»
}
service «» {
policy = «write»
}
* это пример политики, которой слишком много позволено. Для увеличения безопасности, мы можем ограничиться перечислением конкретных значений. Например, service «web» для возможности регистрировать сервисы, названия которых начинаются на web.
Создаем политику agent на основе файла agent-policy.txt:
consul acl policy create -name «agent» -rules @agent-policy.txt
И после, создаем токен на основе политики agent:
consul acl token create -description «Token for Agent» -policy-name agent
Мы получим что-то на подобие:
AccessorID: ddcf169e-237b-836c-47cf-537c12a3818f
SecretID: 37570fdb-798c-24e5-c8c3-612e86031345
Description: Token for Agent
Local: false
Create Time: 2021-09-09 16:36:57.216491588 +0300 MSK
Policies:
b3f3a892-c792-726c-8136-9744fd7e0f7b — agent
Нам нужно значение поля SecretID — это токен, который мы будем использовать на агенте.
Переходим на клиентскую ноду и открываем наш конфигурационный файл:
vi /etc/consul.d/config.json
Допишем:
…
«acl»: {
«enabled»: true,
«tokens»: {
«default»: «<token (SecretID)>»
}
}
…
<token> — это сформированный на сервере токен.
Перезагружаем консул на агенте:
systemctl restart consul
Создание собственного демона и добавление его в systemd
Вы можете создать собственный демон, которым можно будет управлять через systemd.
Например, нам нужно запускать все тот же скрипт /root/test.sh после перезагрузки системы. Начнем с создания файла нашей будущей службы:
Содержимое файла будет следующее:
Description=Template Settings Service After=network.target Type=oneshot User=root ExecStart=/root/test.sh WantedBy=multi-user.target
Основные параметры:
User – пользователь под которым будет запускаться демон
Type=oneshot — процесс будет завершен до запуска дальнейших юнитов
Проверяем и перезапускаем:
● test-script.service - Test Loaded: loaded (/etc/systemd/system/test-script.service; disabled; vendor preset: disabled) Active: active (running)
Если вас устроило то, как работает сервис, добавьте его в автозагрузку:
Created symlink from /etc/systemd/system/multi-user.target.wants/test-script.service to /etc/systemd/system/test-script.service.
Таким образом, вы можете добавить любой ваш скрипт в автозагрузку через systemd.
Это интересно: Как обновить сигнатуры Касперского — рассматриваем по пунктам
Автозагрузка в системе инициализации
Чаще всего, когда говорится автозагрузка 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
Опции Service-файла в Systemd
Service-файла в systemd обычно состоит из трех секций.
Общие элементы конфигурации сервиса настраиваются в секциях и
Параметры конфигурации конкретного сервиса настраиваются в секции .
Важные Опции Секции
Опция | Описание |
---|---|
Description | Краткое описание юнита. |
Documentation | Список ссылок на документацию. |
Before, After | Порядок запуска юнитов. |
Requires | Если этот сервис активируется, перечисленные здесь юниты тоже будут активированы. Если один из перечисленных юнитов останавливается или падает, этот сервис тоже будет остановлен. |
Wants | Устанавливает более слабые зависимости, чем Requires. Если один из перечисленных юнитов не может успешно запуститься, это не повлияет на запуск данного сервиса. Это рекомендуемый способ установления зависимостей. |
Conflicts | Если установлено что данный сервис конфликтует с другим юнитом, то запуск последнего остановит этот сервис и наоборот. |
Список всех опций секции :
$ man systemd.unit
1 | $man systemd.unit |
Важные Опции Секции
Опция | Описание |
---|---|
Alias | Дополнительные имена сервиса разделенные пробелами. Большинство команд в systemctl, за исключением systemctl enable, могут использовать альтернативные имена сервисов. |
RequiredBy, WantedBy | Данный сервис будет запущен при запуске перечисленных сервисов. Для более подробной информации смотрите описание опций Wants и Requires в секции . |
Also | Определяет список юнитов, которые также будут активированы или дезактивированы вместе с данным сервисом при выполнении команд systemctl enable или systemctl disable. |
Список всех опций секции :
$ man systemd.unit
1 | $man systemd.unit |
Важные Опции Секции
Опция | Описание |
---|---|
Type | Настраивает тип запуска процесса. Один из:simple (по умолчанию) — запускает сервис мгновенно. Предполагается, что основной процесс сервиса задан в ExecStart.forking — считает сервис запущенным после того, как родительский процесс создает процесс-потомка, а сам завершится.oneshot — аналогичен типу simple, но предполагается, что процесс должен завершиться до того, как systemd начнет отслеживать состояния юнитов (удобно для скриптов, которые выполняют разовую работу и завершаются). Возможно вы также захотите использовать RemainAfterExit=yes, чтобы systemd продолжал считать сервис активным и после завершения процесса.dbus — аналогичен типу simple, но считает сервис запущенным после того, как основной процесс получает имя на шине D-Bus.notify — аналогичен типу simple, но считает сервис запущенным после того, как он отправляет systemd специальный сигнал.idle — аналогичен типу simple, но фактический запуск исполняемого файла сервиса откладывается, пока не будут выполнены все задачи. |
ExecStart | Команды вместе с аргументами, которые будут выполнены при старте сервиса. Опция Type=oneshot позволяет указывать несколько команд, которые будут выполняться последовательно. Опции ExecStartPre и ExecStartPost могут задавать дополнительные команды, которые будут выполнены до или после ExecStart. |
ExecStop | Команды, которые будут выполнены для остановки сервиса запущенного с помощью ExecStart. |
ExecReload | Команды, которые будут выполнены чтобы сообщить сервису о необходимости перечитать конфигурационные файлы. |
Restart | Если эта опция активирована, сервис будет перезапущен если процесс прекращен или достигнут timeout, за исключением случая нормальной остановки сервиса с помощью команды systemctl stop |
RemainAfterExit | Если установлена в значение True, сервис будет считаться запущенным даже если сам процесс завершен. Полезен с Type=oneshot. Значение по умолчанию False. |
Список всех опций секции :
$ man systemd.service
1 | $man systemd.service |
Примеры Service-файлов в Systemd
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
WantedBy=multi-user.target
1 |
Unit Description=The NGINX HTTP andreverse proxy server After=syslog.target network.target remote-fs.target nss-lookup.target Service Type=forking PIDFile=runnginx.pid ExecStartPre=usrsbinnginx-t ExecStart=usrsbinnginx ExecReload=binkill-sHUP$MAINPID ExecStop=binkill-sQUIT$MAINPID PrivateTmp=true Install WantedBy=multi-user.target |
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target
Type=notify
EnvironmentFile=/etc/sysconfig/httpd
ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND
ExecReload=/usr/sbin/httpd $OPTIONS -k graceful
ExecStop=/bin/kill -WINCH ${MAINPID}
KillSignal=SIGCONT
PrivateTmp=true
WantedBy=multi-user.target
1 |
Unit Description=The Apache HTTP Server After=network.target remote-fs.target nss-lookup.target Service Type=notify EnvironmentFile=etcsysconfighttpd ExecStart=usrsbinhttpd$OPTIONS-DFOREGROUND ExecReload=usrsbinhttpd$OPTIONS-kgraceful ExecStop=binkill-WINCH${MAINPID} KillSignal=SIGCONT PrivateTmp=true Install WantedBy=multi-user.target |
Description=Redis persistent key-value database
After=network.target
ExecStart=/usr/bin/redis-server /etc/redis.conf —daemonize no
ExecStop=/usr/bin/redis-shutdown
User=redis
Group=redis
WantedBy=multi-user.target
1 |
Unit Description=Redis persistent key-value database After=network.target Service ExecStart=usrbinredis-serveretcredis.conf—daemonize no ExecStop=usrbinredis-shutdown User=redis Group=redis Install WantedBy=multi-user.target |
Больше примеров в документации по systemd.service и systemd.unit.
Немного теории
Чтобы всем этим управлять нужна основная служба — система инициализации, которая будет запускать службы linux в нужный момент, следить чтобы они нормально работали, записывать сообщения логов, и самое главное позволять останавливать службы. Раньше, для управления службами использовались скрипты. Я уже говорил, что можно запустить службу из терминала, так вот, каждая служба запускалась в фоновом режиме одна за другой, без возможности параллельного запуска и возвращала свой PID процесса скрипту инициализации, он сохранялся и потом с помощью этого PID можно было проверить работает ли служба и остановить службу linux если это нужно. Все это можно сделать и вручную.
Но потом на смену этому методу пришла новая модель и система инициализации systemd. Система инициализации запускается сразу после загрузки ядра и начинает инициализировать службы, теперь появилась возможность параллельной инициализации, а также зависимостей между службами. Таким образом, теперь можно определить сложное дерево порядка запуска служб. Но мы не будем вникать в подробности создания служб, нас интересует только сам процесс запуска. После запуска systemd собирает весь вывод службы в лог, и следит за ее работой, если служба аварийно завершилась, то автоматически ее перезапускает.
Служба в Systemd описывается файлом юнита, в нем описано что с ней нужно делать и как себя вести. Существуют такие типы служб:
- service — обычная служба, программа
- target — группа служб
- automount — точка автоматического монтирования
- device — файл устройства, генерируется на этапе загрузки
- mount — точка монтирования
- path — файл или папка
- scope — процесс
- slice — группа системных служб systemd
- snapshot — сохраненное состояние запущенных служб
- socket — сокет для взаимодействия между процессами.
Нас будут интересовать только service, и совсем немного target, но мы рассмотрели все остальные, чтобы вы смогли взглянуть на картину немного шире. Основы рассмотрели, теперь будет настройка служб LInux.
Как работает автозагрузка?
Чтобы понять как работает автозагрузка, сначала нужно вспомнить, что происходит во время процесса загрузки Linux. Как только ядро завершит свою инициализацию и будет готово к дальнейшей работе, оно передаст управление системе инициализации. Система инициализации — это основной процесс, именно он запускает все другие процессы в системе.
Есть процессы, которые система инициализации, например, systemd, запускает по умолчанию, но также вы можете настроить чтобы она запускала нужные вам процессы. Также многими дочерними процессами выполняются файлы скриптов или имеется та или иная возможность запускать необходимые вам программы. Такая возможность есть и у большинства окружений рабочего стола.
Рассмотрим основные уровни автозагрузки которые вы можете использовать:
- Автозагрузка на уровне ядра — вы можете указать любую программу, которая будет запускаться после старта ядра вместо системы инициализации;
- Автозагрузка системы инициализации — запуск основных системных сервисов, дополнительных сервисов, а также ваших скриптов на этапе инициализации системы;
- Автозагрузка rc.local — устаревший метод загрузки скриптов, выполняется перед запуском графического окружения;
- Автозагрузка менеджера входа — вы можете выполнять свои скрипты или команды после запуска менеджера входа, но перед запуском окружения;
- Автозагрузка X сервера — запуск нужных программ или скрпитов сразу после старта X сервера;
- Автозагрузка окружения — большинство окружений поддерживают автозагрузку программ, там даже можно настроить отложенный запуск и другие параметры;
- Автозагрузка bash — самый последний вариант — это автозагрузка на уровне отдельной командной оболочки, вы можете выполнять нужные команды автоматически, как только будет запущен терминал.
Дальше мы рассмотрим более подробно как использовать каждый из пунктов для автозагрузки программ, скриптов или выполнения команд в Linux.
Как работает автозагрузка?
Чтобы понять как работает автозагрузка, сначала нужно вспомнить, что происходит во время процесса загрузки Linux . Как только ядро завершит свою инициализацию и будет готово к дальнейшей работе, оно передаст управление системе инициализации. Система инициализации — это основной процесс, именно он запускает все другие процессы в системе.
Есть процессы, которые система инициализации, например, systemd, запускает по умолчанию, но также вы можете настроить чтобы она запускала нужные вам процессы. Также многими дочерними процессами выполняются файлы скриптов или имеется та или иная возможность запускать необходимые вам программы. Такая возможность есть и у большинства окружений рабочего стола.
Рассмотрим основные уровни автозагрузки которые вы можете использовать:
Заключение
Автозагрузка в Ubuntu имеет множество способов тонкой настройки. Ее возможности трудно охватить. Грамотное использование этого инструмента делает ОС Linux практичнее в повседневных задачах.
Создаём пустой файл.
Первой строкой пишем:
#!/bin/sh
Данная строка указывает, какую командную оболочку необходимо использовать. Дальше свои команды.
Сохраним его под оригинальным названием (чтоб не совпадал с уже существующими) в каталоге /usr/sbin/.
Чтобы скрипт запускался при загрузке, необходимо прописать его в файле /etc/rc.local до строчки exit 0. Если у вас не существует данного файла, создайте его и вставьте в него следующее содержимое:
#!/bin/sh -e
#Здесь вставляем строку с указанием вашего скрипта.
/usr/sbin/mescripts
exit 0