Управление Демонами Или Автозапуск В Linux

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

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

Сразу стоит отметить, что для того, чтобы программа была полноценным сервисом/демоном, ее необходимо написать соответствующим образом ( ссылка1 , ссылка2 ).

Однако это делается не всегда, хотя это может быть и не совсем правильно.

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

  • прописать вызов программы/скрипта запуска в /etc/rc.local в фоновом режиме (&) (в разных дистрибутивах может быть в разных местах, например /etc/rc.d/rc.local) с перенаправлением I /O передает поток в /dev/null. Например, «/home/user/my_prog 1 > /dev/null 2 > /dev/null &».

    Также дополнительно вы можете использовать команду ноуп ;

  • впишите вызов в /etc/inittab, согласно правилам его выполнения.

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

  • написать скрипт, позволяющий запустить/остановить/перезапустить программу как демон, а также получить информацию о ее состоянии.

Первый способ самый простой, но и самый проблематичный.

Файл rc.local доступен не во всех дистрибутивах.

Невозможно установить уровень триггера.

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

И, в конце концов, запуск с него подрывает устойчивость системы к взлому (примеры легко найти в поисковике).

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

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

Да и захламлять inittab некрасиво.

Последний способ на данный момент является наиболее «кошерным», но немного сложнее предыдущих (возможно, на первый взгляд).

Именно они олицетворяют всех системных демонов, что говорит само за себя.

Именно поэтому я рассмотрю это ниже.

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

Сразу скажу, что у меня Debian 6 и в других дистрибутивах пути могут немного отличаться.

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

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

Сначала вам следует заглянуть в каталог /etc/init.d. В нем содержатся скрипты запуска всех сервисов, а также два файла для тех, кто хочет написать такой же для себя: README и скелет скелет содержит пустой скрипт запуска с достаточно подробными комментариями, а README его хорошо дополняет, несмотря на небольшой размер.

Вы также можете просмотреть другие файлы и попытаться найти там что-нибудь, что прояснит неясную ситуацию.

В Debian 6 стандарт инициализации LSB (Linux Script Base) используется для запуска сценариев демона.

Вы можете прочитать об этом больше здесь .

Для систем, где LSB не используется, стоит посмотреть здесь .

Давайте подробнее рассмотрим скелет файла.

Первое, с чего оно должно начинаться, это, конечно же, «#!/bin/sh», ведь скрипт инициализации — файл запуска.

Далее идет закомментированный заголовок:

 
 ### BEGIN INIT INFO
 # Provides:          skeleton
 # Required-Start:    $remote_fs $syslog
 # Required-Stop:     $remote_fs $syslog
 # Default-Start:     2 3 4 5
 # Default-Stop:      0 1 6
 # Short-Description: Example initscript
 # Description:       This file should be used to construct scripts to be
 #                    placed in /etc/init.d.
 ### END INIT INFO
 
Может показаться, что это просто дополнительная информация от автора, но это не так.

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

Вот тут-то и пригодится файл README, который показывает, что в заголовке скелета указаны не все возможные параметры.

Как минимум есть следующее:

 
 # Should-Start:      $portmap
 # Should-Stop:       $portmap
 # X-Start-Before:    nis
 # X-Stop-After:      nis
 # X-Interactive:     true
 
Все параметры и их полное описание (на английском языке) можно увидеть здесь и по-русски здесь И здесь (Спасибо ооооооо за новые ссылки ^_^).

К русской версии добавлю, что в Required-Start: можно ввести $all, тогда текущий скрипт будет запускаться после всех остальных (иногда это необходимо).

Также X-Interactive: true указывает, что этот скрипт может взаимодействовать с пользователем, запрашивая что-то, например пароль.

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

Некоторые из них необходимо будет настроить в соответствии с вашими потребностями.

Затем проверяется существование самого демона и попытка прочитать файл конфигурации (их имена должны быть указаны в переменных выше), затем загружаются переменные rcS, а затем следует одна из самых интересных частей файла инициализации: .

/lib/lsb/init-функции Это определение функций LSB для работы с журналами, статуса LSB службы и работы с процессом.

В некоторых дистрибутивах этот файл может находиться в каталоге /etc/init.d. Имена и некоторые подробности можно узнать непосредственно из комментариев к функциям в этом файле, а также здесь .

Следующая часть — это тело самого скрипта.

Тело состоит из условных частей, которые являются командами для демона: start, stop, restart/reload/force-reload, status. Некоторые люди разделяют их на отдельные функции, другие нет. На мой взгляд, их функции выглядят более эстетично и код более понятен.

Все эти команды объединяет оператор выбора регистра, который выбирает для выполнения необходимый участок кода в зависимости от команды (параметра), с помощью которой был запущен скрипт инициализации.

Таким образом, для создания обычного скрипта достаточно подставить нужные значения в переменные в начале файла и, возможно, добавить немного кода в функции запуска/остановки (например, загрузка/выгрузка драйвера ).

После того, как файл будет готов, его нужно скопировать в /etc/init.d и добавить в автозагрузку: обновление-rc.d значения по умолчанию (или инсерв для стабильной версии Debian 6 и выше) Удалить его из автозагрузки можно так: обновление-rc.d -f удалять (или insserv -r для стабильной версии Debian 6 и выше) Далее вы также можете использовать команды sysv-rc-conf в debian или service в ядре Fedora, чтобы включить/отключить автозагрузку служб.

Автозапуск графического ПО без ввода паролей Реализация этой возможности сама по себе снижает уровень безопасности ОС, т.к.

войти может кто угодно.

Но бывают ситуации, когда это необходимо.

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

Других под рукой не установлено.

КДЕ: Убрать запрос пароля для входа в систему можно в центре управления (kcontrol) -> администрирование системы -> менеджер входа -> удобство.

Там выберите пользователя для входа (кроме root) и установите необходимые флажки (разрешить автовход и вход без ввода пароля).

Для автозапуска программы необходимо добавить ссылку на стартовый файл/скрипт необходимого ПО в каталог /home/.

Каталог /.

kde/Автозапуск.

Гном: Здесь вы также можете удалить запрос пароля для входа в центр управления (gnome-control-center) -> Экран входа в систему.

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

Для автозапуска программы снова в центре управления выберите «Автозагрузка приложений» -> «Добавить» и заполните небольшую форму.

Для обоих графических менеджеров: Если вам нужно запускать от имени обычного пользователя, но под rootом, то вам также необходимо настроить правила в /etc/sudoers для запуска определенной программы/набора программ от имени суперпользователя (в целях безопасности рекомендуется сделать это с помощью визудо).

Я не буду вам рассказывать, как это сделать, потому что.

В man sudoers всё хорошо описано.

На этом пока всё.

Теги: #linux #настройка Linux #автозапуск #автозапуск

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.