Linux what is daemon tools

Linux what is daemon tools

Copyright (C) 2003 М. Альхименко.
Оригинал статьи находится на http://lithium.opennet.ru
По всем вопросам обращайтесь на articles lithium.opennet.ru

Любая публикация и перепечатка этого документа разрешается только с предварительного разрешения автора. При публикации запрещается каким-либо образом изменять содержимое документа.

Как пишет сам DJB: «daemontools — это набор инструментов для управления UNIX-сервисами». Основными отличиями от обычных средств запуска (структуры каталогов rcx.d или rc.d или rc.local и пр.) является способность перезапускать сервис в случае его падения и наличие программы ведения и ротации логов (multilog). Преимущества первого отличия и так imho очевидны, а автоматическая ротация логов, кроме всего прочего, хороша тем, что не позволит исчерпать (случайно или умышленно) свободное место в разделе с /var/log/ разросшимися логами. Также, multilog позволяет вести лог вывода программ, не умеющих отдавать вывод в syslog. Таким образом, можно запускать как сервис программы, вообще не предназначенные для этого. Есть опыт использования этого пакета для запуска djbdns, qmail, squid и apache. Первый расчитан на работу именно в связке с daemontools, второй imho тоже был изначально рассчитан DJB для запуска через daemontools, хотя многие его запускают традиционным способом.

Сразу следует уточнить: изложенное ниже — вольный перевод официального описания с http://cr.yp.to/daemontools.html, приправленое собственными комментариями. К тому же, не все удалось попробовать лично. Поэтому, ничто не заменит вам чтения оригинала документации.

Все команды и пути даются из расчета на работу с RH-based Linux (RH9, ASP9), т.к. пока нет опыта работы с другим ОС. Если у вас другая система, и пути/команды не подходят, пишите — соответствующие поправки будут по возможности включены.

Создаем каталог /package:

# mkdir -p /package
# chmod 1755 /package
# cd /package

Скачиваем исходники daemontools-0.76.tar.gz в /package:

(версия программы, как и её адрес со временем может поменяться)
Распаковываем:

# gunzip daemontools-0.76.tar
# tar -xpf daemontools-0.76.tar
# rm daemontools-0.76.tar
# cd admin/daemontools-0.76/src

Текущая версия daemotools, также как и qmail и djbdns, дает ошибку при сборке с версией glibc выше 2.3.1. Поэтому надо наложить патч, исправляющий эту несовместимость, если у вас она появляется. Сам патч можно найти на ftp://moni.csi.hu/pub/glibc-2.3.1/. Создаем папку для патча, скачиваем его туда и накладываем на исходники:

# mkdir patch
# cd patch
# wget ftp://moni.csi.hu/pub/glibc-2.3.1/daemontools-0.76.errno.patch
# cd..
# cd..
# patch -p1 |-svscanboot-+-readproctitle
`-svscan
. skip.
это обозначает, что svscanboot запущен и готов обслуживать сервисы.

Теперь кратко о том, как все это работает. На запущенной системе дерево процессов, имеющих отношение к daemontools выглядит примерно так:

init-+
|-svscanboot-+-readproctitle
| `-svscan-+-supervise—dnscache
| |-supervise—multilog
| |-supervise—qmail-send-+-qmail-clean
| | |-qmail-lspawn
| | |-qmail-rspawn
| | `-splogger
| |-supervise—tcpserver
| |-supervise—splogger
| `-supervise—squid-+-redirector
| |-10*[redirector]
| `-unlinkd

(лишние процессы вырезаны)

Svscanboot запускается при старте системы демоном init из inittab. Svscanboot запускает программу svscan в каталоге /service, который мы создали. В нем будут содержаться сведения о сервисах, которые daemontools будет контролировать — это подкаталоги, по одному для каждого сервиса. В случае падения svscanboot он перезапускается демоном init. Вывод запущенного svscan svscanboot перенаправляет в процесс readproctitle. Выглядит это так:
Далее следуют 400 точек, так что не пугайтесь, увидев их в выводе ps — так задумано. Последние 400 байт вывода svscan заменяют эти точки. Сделано это для того, чтобы можно было узнать о проблемах, запустив ps -auxww.

Читайте также:  Wacom pen drivers windows 10

Svscan служит для запуска и слежения за сервисами. Он запускает по отдельному процессу supervise, который и будет контролировать сервис, для каждого обнаруженного каталога в /service (кроме тех, чьи имена начинаются с точки). Svscan каждые 5 секунд проверяет каталог /service на наличие новых подкаталогов. Если такие будут обнаружены, запускается новая копия supervise для каждого каталога. Если в подкаталоге сервиса содержится каталог log, то будет запущена еще одна копия supervise и создан pippeline между ними. Это сделано для использования логирования выводу программ минуя syslog — используя вывод программы из stdout и stderr. В daemontools для этих целей испольуется программа multilog — замена syslog от DJB, хоть и работает она по другим принципам. Так, например, dnscache из пакета djbdns выводит информацию о своей работе не в syslog, а в stdout. Этот вывод перенаправляется в multilog, который создает в своем подкаталоге main лог-файлы и осуществляет их ротацию. Также, svscan перенаправляет вывод всех дочерних supervise в readproctitle через pipeline, созданный svscanboot.

Supervise является процессом, непосредственно контролирующим сервис. Он вызывается с параметром, в котором содержится имя каталога для контролируемого сервиса в /service. В этом каталоге он ищет скрипт run, который и запускает. Если процесс, обслуживаемый supervise падает, supervise перезапускает его. Supervise создает в каталоге сервиса подкаталог supervise, в котором содержатся сведения о процессе. Эти сведения могут быть прочитаны с помощью программы svstat. Для управления сервисом служит программа svc.

Svc это средство для управления сервисами. Формат его вызова
где opt — параметр, воздействующий на сервис, а services имя каталога сервиса, обслуживаемого supervice. Основные параметры, используемые с svc:

  • -u: Up. Если сервис не запущен, он запускается. Если сервис останавливается, он будет перезапущен.
  • -d: Down. Если сервис запущен, ему посылается сигнал TERM и затем сигнал CONT. После остановки, сервис не перезапускается.
  • -o: Once. Если сервис не запущен, он запускается. Если сервис останавливается, он не будет перезапущен.
  • -p: Pause. Посылает сервису сигнал STOP.
  • -c: Continue. Посылает сервису сигнал CONT.
  • -h: Hangup. Посылает сервису сигнал HUP.
  • -a: Alarm. Посылает сервису сигнал ALRM.
  • -i: Interrupt. Посылает сервису сигнал INT.
  • -t: Terminate. Посылает сервису сигнал TERM.
  • -k: Kill. Посылает сервису сигнал KILL.
  • -x: Exit. supervise завершит работу как только сервис завершится. Если вы используете этот параметр на стабильной системе, вы делаете что-то не так; supervise разработан, чтобы быть запущенным всегда.

(о сигналах в Unix читайте в man 7 signal).

Readproctitle запускается программой svcscanboot. При запуске svscan, его stderr и stdout перенаправляется в readproctitle. Вторым параметром его запуска являются некоторое количество точек (до 400). При получении на stdin какого-либо ввода, он выводит его вместо этих точек. Это позволяет сразу видеть ошибки при выводе списка процессов с помощью ps -auxww. (Опыт показывает, что это довольно полезная функция). Чтобы очистить cmdline процесса readproctitle после устранения ошибки можно запустить скрипт следующего содержания:

Читайте также:  Как установить matplotlib linux

#!/bin/sh
echo -n \
> «service errors: \
. \
(вырезано 18 одинаковых строк)
. \
» > /proc/`pidof readproctitle`/fd/0

Этот скрипт посылает строку «service errors: » и 400 точек на stdin процесса через специальный файл в /proc. Можно просто создать исполняемый скрипт dots в /root/bin, т.к. этот путь обычно есть в PATH.

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

Выбор:


Предупреждения:


Файлы состояния:


Временные метки:


Лог-файлы:

Если оператор каталог начинается с точки или слэша, то оператор добавляет каждую выбранную строку в лог-файл в определенном каталоге (если каталог не существует, multilog его создаст). Ведение логов осуществляется следующим образом:
в каталоге содержится некоторое количество старых логов, лог с именем current (текущий лог), и другие файлы, с помощью которых multilog отслеживает свои действия. Имя каждого лога начинается с @, продолжается временной меткой, обозначающей, когда запись в лог была завершена и завершается следующими символами:

  • s: Файл полностью завершен и нормально записан на диск.
  • u: Запись в файл была завершена некорректно и он может быть усечен. Этот файл не был обработан с помощью оператора !processor

Оператор
является максимальным размером файла для последующего оператора каталог. Когда current достигает этого размера multilog начинает новый файл. Размер должен быть между 4096 и 16777215 байт. Размер по умолчанию — 99999 байт.
Оператор определяет максимально количество лог-файлов для последующего оператора каталог. Этот параметр должен быть не меньше 2. Значение по умолчанию — 10. При переименовании файла current multilog удаляет самый старый лог-файл в каталоге, если их количество равно или больше значения этого оператора.
Оператор определяет processor (программу-обработчик) для последующего оператора каталог. Этой программе будет передан файл current на stdin перед перед началом нового файла. Вывод программы сохраняется в старом файле current, после чего он переименовывается и создается новый файл current.

Источник

Daemons

A daemon (also known as background processes) is a Linux or UNIX program that runs in the background. Almost all daemons have names that end with the letter «d«. For example, httpd the daemon that handles the Apache server, or, sshd which handles SSH remote access connections. Linux often start daemons at boot time. Shell scripts stored in /etc/init.d directory are used to start and stop daemons.

Contents

Typical functions of daemons

  • Open network port (such as port 80) and respond to network requests.
  • Monitor system such as hard disk health or RAID array.
  • Run scheduled tasks such as cron.

List of service daemons for Linux and Unix-like systems

  • amd — Auto Mount Daemon
  • anacron — Executed delayed cron tasks at boot time
  • apmd — Advanced Power Management Daemon
  • atd — Runs jobs queued using the at tool
  • autofs — Supports the automounter daemon allowing mount and unmount of devices on demand
  • crond — The task scheduler daemon
  • cupsd — CUPS printer daemon
  • dhcpd — Dynamic Host Configuration Protocol and Internet Bootstrap Protocol Server
  • ftpd — FTP Server Daemon
  • gated — routing daemon that handles multiple routing protocols and replaces routed and egpup
  • httpd — Web Server Daemon
  • inetd — Internet Superserver Daemon
  • imapd — An imap server daemon
  • lpd — Line Printer Daemon
  • memcached — In-memory distributed object caching daemon
  • mountd — mount daemon
  • mysql — Database server daemon
  • named — A DNS server daemon
  • nfsd — Network File Sharing Daemon
  • nfslock — Used to start and stop nfs file locking services
  • nmbd — Network Message Block Daemon
  • ntpd — Network Time Protocol service daemon
  • postfix — A mail transport agent used as a replacement for sendmail
  • postgresql — Database server daemon
  • routed — Manages routing tables
  • rpcbind — Remote Procedure Call Bind Daemon
  • sendmail — A mail transfer agent Daemon
  • smbd — Samba (an SMB Server) Daemon
  • smtpd — Simple Mail Transfer Protocol Daemon
  • snmpd — Simple Network Management Protocol Daemon
  • squid — A web page caching proxy server daemon
  • sshd — Secure Shell Server Daemon
  • syncd — Keeps the file systems synchronized with system memory
  • syslogd — System logging daemon
  • tcpd — Service wrapper restricts access to inetd based services through hosts.allow and hosts.deny
  • telnetd — Telnet Server daemon
  • vsftpd — Very Secure FTP Daemon
  • webmin — Web based administration server daemon
  • xinetd — Enhanced Internet Superserver Daemon
  • xntd — Network Time Server Daemon
Читайте также:  Windows wasapi как включить

How do I start / stop / restart daemons for the shell prompt?

You need to use the service command as follows [1] [2] ::

In this example, start, stop, and restart httpd daemon:

How do I see list of all running daemons?

To see the status all installed daemons, enter:

Sample outputs from CentOS Linux development server:

Sample outputs from my Ubuntu Linux desktop systems:

Источник

wiki.tux.org.ua

Содержание

GCDEmu — Daemon Tools для Линукс

Итак, CDEmu — это простая утилита для создания виртуальных CD/DVD-приводов (аналог DAEMON Tools и Alcohol 120%). В CDemu реализована поддержка множества форматов образов, таких как: mdf/mds, nrg, bin/cue, iso, ccd, daa, c2d, toc, b6t, cdi, cif. И так же TR / Transfer Rate (скорость считывания) и DPM эмуляция (местоположение данных). Вот его PPA — http://cdemu.net/

Установка

Добавляем новый репозиторий:

Обновляем список пакетов и устанавливаем программу:

Для работы с этой программой используется апплет gnome. Чтобы поставить его, для начала надо щелкнуть правой кнопкой по менюшке, и выбрать пункт Добавить на панель

Теперь выберем виджет cdemu и нажмем добавить.

Далее жмем на апплет и видим:

Итак, мы видим 2 виртуальных устройства. Если нажать на одном из них, откроется браузер, где добравшись до своего файла-образа можно его примонтировать.

Чтобы отмонтировать, нужно снова нажать правой кнопкой мыши по апплету, а потом кликнуть левой кнопкой по виртуальному CD-ROM в котором торчит образ. Ну вот вобщем-то и все

Чтобы демон CDEmu запускался сразу при старте системы (Use system bus), что совершенно не обязательно, выполним:

В открывшемся текстовом редакторе, найдем значение LOAD_DAEMON и заменим 0 на 1.

Источник

Оцените статью