- Что такое inittab
- Systemd: управление автозагрузкой служб в Linux
- Добавление сервиса в systemd
- Удаление сервиса из systemd
- Systemd: маскировка юнитов
- Создание скрипта в init.d для запуска во время инициализации системы
- Вариант 1
- Вариант 2
- Linux Mint
- Elementary OS
- Ubuntu
- Deepin
- Загрузка с помощью rc.local после загрузки системы
- Автозагрузка приложений
- Автозагрузка приложений в Linux Mint 17
- Настройка автозагрузки
Что такое inittab
Собственно inittab — это файл, в котором можно посмотреть/изменить уровень загрузки операционной системы в /etc/inittab. Давайте сломаем это
В Linux существует 7 уровней загрузки операционной системы. В нашем случае нулевой уровень — режим восстановления, первый — одиночный режим запуска от имени root. 2-5 загрузка в многопользовательском режиме (т.е обычный режим). Отличаются они только набором стартовых скриптов. Уровень 6 — это перезапуск. Скрипты берутся из каталогов, перечисленных в inittab. Наша система по умолчанию запускается на уровне 5, давайте посмотрим, что находится в каталоге /etc/init.d/rc 5:
Скрипты в этом каталоге выполняются при каждом запуске системы. А если быть точнее, то это просто символические ссылки на сами скрипты. Первая буква означает 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 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 — Выводит список единиц, являющихся службой.
Добавление сервиса в 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.
Если после маскирования сервиса вы проверите файлы устройства, то увидите, что сервис помечен как замаскированный (маскированное состояние):
Таким простым способом можно уберечь себя от удаления службы, даже если она не удаляется при запуске 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-й уровень загрузки
Я перезагружаюсь и вижу прибыль сообщения консоли tty
По сути, это не более чем консоль. Мы можем переключаться между вкладками.
CTRL+ALT+(F1–F6)
команда startx запустит графику KDE.
Автозагрузка приложений в Linux Mint 17
сначала откройте меню приложения и введите в поле поиска startup, затем запустите программу «Приложения для запуска по умолчанию» или «Приложения для запуска»:
В главном окне можно увидеть, какие программы уже добавлены в автозагрузку:
Чтобы добавить новое приложение, нажмите кнопку «Добавить»:
Здесь у вас есть выбор, добавить приложение из меню или указать команду самостоятельно:
В опции из меню выберите одну из доступных программ и нажмите кнопку добавить:
Например, Gparted, а сейчас автозагрузка в linux mint для Gparted уже настроена:
Но если программы нет в списке, например, VLC, мы можем использовать тот же диалог, что и в Ubuntu:
В открывшемся окне нужно ввести название приложения, оно ни на что не влияет, а нужно только знать, почему этот пункт добавлен в автозагрузку Linux Mint:
Затем выберите команду программы. Необходимо указать полный путь к исполняемому файлу. Если помните — просто введите текстовое поле, но надежнее будет нажать кнопку Обзор и найти его в файловой системе.
Обычно исполняемые файлы хранятся в папке /bin или /usr/bin. Выбрав нужный файл, нажмите кнопку «Открыть:
При необходимости здесь также можно ввести задержку запуска. Осталось нажать на кнопку Добавить:
Все, теперь ваше приложение добавлено в автозагрузку Linux Mint 17 и будет запускаться при каждом запуске системы.
Читайте также: ТОП-10 лучших программ для записи игр со звуком на ПК без потери fps
Настройка автозагрузки
По умолчанию не все приложения отображаются в меню загрузки. Большинство программ и служб по умолчанию скрыты. Чтобы включить их, введите:
sudo sed -i ‘s/NoDisplay=true/NoDisplay=false/g’ /etc/xdg/autostart/*.desktop
Теперь вы можете увидеть все приложения и службы, которые запускаются по умолчанию: