Поскольку операционная система Linux характеризуется как многозадачная операционная система, демон по определению представляет собой программу, которая постоянно выполняется в фоновом режиме. Короче говоря, выполнение этого процесса не зависит от активного взаимодействия пользователя с системой. Обычный пользователь системы не может контролировать периодическое выполнение процесса демона.
Соглашение об именах, которое определяет большинство процессов-демонов, - это суффикс из одной буквы d. Это соглашение об именах позволяет различать обычные системные процессы и процессы, управляемые демонами. Например, sshd это процесс-демон, отвечающий за управление входящимиSSH связи. Другой пример процесса демона:syslogd. Он отвечает за средство ведения системного журнала Linux.
В среде Linux запуск демонов происходит во время загрузки. Поскольку система Linux является идеальным клоном Unix, процесс инициализации квалифицируется как родительский процесс для демона. Чтобы запускать и останавливать демонов в вашей операционной системе Linux, вам сначала нужно получить доступ к/ etc / init.d каталог скриптов в вашей ОС.
Общие функции демонов
- Это позволяет вашей системе правильно отвечать на сетевые запросы, связывая каждый запрос с совместимым сетевым портом. Типичный сетевой порт, обрабатываемый демонами, - это порт 80.
- Демоны позволяют запускать или выполнять запланированные системные задачи. Демон, отвечающий за эту конкретную задачу, называется cron. Это создаст cron работа который будет обрабатывать периодическое выполнение ваших запланированных задач.
- Демоны также предлагают бесценный вклад в мониторинг производительности вашей системы. Например, они могут проверить состояние RAID-массива или жесткого диска.
Полезные сервисные демоны Linux
- и: Демон автоустановки
- анакрон: Выполнение отложенных задач cron во время загрузки
- apmd: Демон расширенного управления питанием
- atd: Использует функциональные возможности инструмента для выполнения заданий в очереди
- autofs: работает рука об руку с демоном автомонтирования для облегчения монтажа и демонтажа системных устройств по требованию
- crond: демон, который обрабатывает планирование задач
- cupsd: демон, который обрабатывает печать CUPS
- DHCP: демон для сервера протокола Internet Bootstrap и протокола динамической конфигурации хоста.
- закрыто: демон маршрутизации, отвечающий за несколько протоколов маршрутизации. Заменяет routed и egpup
- httpd: демон, который работает с веб-серверами, такими как Apache
- inetd: демон, связанный с Internet Superserver
- imapd: демон для сервера IMAP
- lpd: Демон линейного принтера
- memcached: демон кэширования объектов, распределенный в памяти
- mountd: монтировать демон
- MySQL: демон для сервера базы данных MySQL
- по имени: демон для DNS-сервера
- nfsd: Демон обмена сетевыми файлами
- nfslock: Поскольку nfsd связан со службами блокировки файлов, этот демон может запускать и останавливать эти службы.
- nmbd: демон для сетевого блока сообщений
- ntpd: демон для службы протокола сетевого времени
- постфикс: демон, который служит агентом почтового транспорта. Это альтернатива sendmail.
- Postgresql: демон для сервера базы данных Postgres
- направлено: демон для управления таблицами маршрутизации
- rpcbind: демон, связанный с привязкой удаленного вызова процедур
- Отправить почту: демон, который служит агентом пересылки почты
- smbd: демон для Samba SMB сервера
- smtpd: демон для простого протокола передачи почты
- snmpd: демон для простого протокола управления сетью
- Кальмар: демон, связанный с прокси-сервером для кэширования веб-страниц
- sshd: демон, связанный с Secure Shell Server
- синхронизация: демон для синхронизации системной памяти с системными файлами
- Системный журнал: демон, который ведет системный журнал
- tcpd: эта оболочка службы демона выполняет протоколы ограничения доступа, связанные с службами демона на основе inetd. Он реализует эти ограничения через хозяева.позволять а также хозяева.отказываться от.
- Telnetd: демон для telnet-сервера
- vsftpd: демон для очень безопасного протокола передачи файлов
- webmin: демон для веб-сервера администрирования
- xinetd: демон, связанный с Enhanced Internet Supervisor
- xntd: демон для сетевого сервера времени
Независимо от того, являетесь ли вы новичком, средним или опытным пользователем в мире операционной системы Linux, вы никогда не забудете ознакомиться с любым из вышеперечисленных демонов по мере развития своих навыков и опыта в этой среде ОС.
Запуск / остановка / перезапуск демонов: терминальный подход
Теперь, когда у вас есть список полезных демонов Linux, которые нужно запомнить и изучить, первое, что вам нужно знать, это как запускать, останавливать или перезапускать эти демоны. При запуске терминала Linux примите во внимание следующие правила синтаксиса для запуска, остановки и перезапуска демона в операционной системе Linux.
запуск предпочтительного имени-демона службы остановка предпочтительного имени-демона службы перезапуск предпочтительного имени-демона службы
Заменить предпочитаемое-имя-демона аргумент синтаксиса с именем системного демона Linux по вашему выбору. Вы можете выбрать один из выделенного выше списка демонов, если он активен или уже определен в вашей системе Linux. Например, мы можем реализовать практическое использование вышеуказанного синтаксиса, пытаясь запустить, остановить и перезапуститьдемон. Перейдите к / etc / init.d каталог на вашем терминале для списка доступных демонов в вашей системе Linux.
Список демонов ваших систем Linux
Более эффективный способ отметить доступные демоны в вашей системе Linux вместо перехода к / etc / init.d directory - перечислить все определенные активные и неактивные демоны из этого каталога с помощью одной команды. Следующая команда эффективна для достижения этой цели.
$ service -status-all
Положительные [+] и отрицательные [-] в скобках знаки перед перечисленными именами демонов означают, что они либо активны, либо неактивны, соответственно.
Работа с пользовательскими демонами
Для успешного создания и реализации определенного пользователем демона необходимо соблюдать определенные правила или протоколы. Эти протоколы помогут вам полностью понять выполнение демонов в любой среде Linux. Демоны также достаточно гибки, чтобы взаимодействовать с модулями ядра через системные вызовы. Это расширение функциональности демона поддерживает его взаимодействие с аппаратными устройствами, такими как КПК (персональные цифровые помощники), принтеры и жизнеспособные внешние платы контроллеров. Строительные блоки демонов также вносят свой вклад в характерную мощность и гибкость операционной системы Linux.
Соответствующая реализация демона с использованием Python тщательно продемонстрирована и задокументирована Сандером Марешалом. Следите за порядком выполнения при создании этого демона. Во-первых, ваша система Linux нуждается в установке пакетов Python для успешной разработки демонов. Чтобы установить Python, вы можете использовать следующую команду.
$ sudo apt установить python3-pip python3-dev
Ссылка на код демона authoredPython Сандера Марешала также предлагает улучшенную версию кода Python 3. Было бы полезно, если бы вы подумали о его реализации, чтобы лучше понять, как работают демоны.
Если вы не уверены, установлен ли у вас Python, выполните следующую команду на своем терминале Linux.
$ python3 --version
Цель любого демона
Поскольку один демон предназначен для обработки конкретной задачи, он должен выполнять ее до совершенства. Рассматриваемая задача может быть такой же простой, как создание отчета и отправка его администратору через sendmail, или столь же сложной, как управление несколькими доменами, связанными с несколькими почтовыми ящиками. В какой-то момент демон, который вы собираетесь создать, должен будет взаимодействовать с другими существующими демонами.
взаимодействие пользователя с демоном
Не рекомендуется, чтобы системный пользователь и созданный демон взаимодействовали напрямую. Если это необходимо для демона, вы создаете для связи с системным пользователем. Это общение может быть облегчено с помощью чего-то вроде графического интерфейса. Эта коммуникационная платформа может иметь сложный графический интерфейс GTK + или простоту набора сигналов.
Создание вашего демона
Многочисленные подходы поддерживают создание демонов. Например, вы можете использовать интерфейс командной строки для демонстрации скрипта Python следующим образом:
$ python my_python_script.ру &
Вы можете сохранить код демона Python3, созданный Сандером Марешалом, в файле Python и демонизировать его с помощью приведенной выше команды. Хотя приведенная выше команда терминала легко создаст для вас демона, вам придется столкнуться с такими проблемами, как непредсказуемые выходы терминала. Эти проблемы зависят от того, насколько хорошо вы реорганизовали код демона Python. Кроме того, описанный выше подход не поддерживает назначение файлов блокировки PID определенным демонам. Это делает невозможным управление любым демоном, поскольку большинство из них будет выполняться мгновенно. С другой стороны, если вам нужен только простой демон, вышеупомянутый подход даст вам желаемые результаты демона.
Базовая структура демона
Прежде чем демон выполнит или выполнит намеченную функцию, он должен будет учесть некоторые предвзятые правила, ведущие к его выполнению. Вы можете думать об этих правилах как о низкоуровневой домашней работе, ведущей к ее реальной задаче. Эти правила можно разбить на следующие этапы.
- Сначала происходит создание вилки из родительского процесса
- Изменение umask (маска режима файла) следует
- Журналы открыты для записи
- Создается уникальный SID (Session ID)
- Выполнение переключается с текущего рабочего каталога на дополнительное расположение для сохранения целостности файла
- Стандартные файловые дескрипторы закрыты
- Выполнение целевого кода демона
Подробнее о реализации примеров демонов можно найти на GitHub.