Въведение в daemontools

Както той пише DJB: ". Daemontools - набор от инструменти за UNIX-базирани управление на услугата" Основните разлики от конвенционалния стартиране (структурата на директориите RCX .d или rc.d rc.local или т.н.) е възможността за рестартиране на услугата, ако това е наличието на честота и справка и програма лог (Multilog). Предимства на първата разлика и така IMHO очевидното, а автоматичното завъртане дневник, наред с други неща, е добре, защото той не позволява на отработените газове (случайно или умишлено) свободното пространство в преградните / реактивна / дневник / трупи обрасли. Също така, Multilog ви позволява да влезете изходни програми не са в състояние да даде заключение за Syslog. По този начин, можете да стартирате програмата като услуга, изобщо не са предназначени за тази цел. Имам опит за използване на този пакет да тече djbdns, Qmail, калмари и Apache. Първата е насочена към работа е във връзка с daemontools, втори IMHO, също първоначално проектирани да работят през DJB daemontools, въпреки че много от серия си по традиционния начин.

Всички команди и начини са базирани на работа с RH-базирани Linux (RH9, ASP9), като Няма опит с други операционни системи. Ако имате друга система, а начин / команда не е подходящ, моля, свържете се - ще бъдат включени съответните изменения, когато е възможно.

Създаване на директория / пакет:

# Защитен режим -p / пакет
# Коригират 1755 / пакет
# Cd / пакет

Изтеглите изходния код daemontools-0.76.tar.gz в / пакет:

# Gunzip daemontools-0.76.tar
# Tar -xpf daemontools-0.76.tar
# Rm daemontools-0.76.tar
# Cd администратор / daemontools-0.76 / SRC

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

# Защитен режим пластир
# Cd пластир
# Wget ftp://moni.csi.hu/pub/glibc-2.3.1/daemontools-0.76.errno.patch
# Cd ..
# Cd ..
# Patch -p1

Сглобени и инсталирани пакет:

След сглобяването и монтажа, svscanboot програма е предписано в inittab (SV: 123456: Respawn: / команда / svscanboot) и първоначален демон е инструктиран да прочетете отново файла. Init започва svscanboot (тя вече ще винаги да се изпълнява при стартиране на системата и рестарт, ако той изведнъж пада (или го себе си) да убие). Ние се провери дали всичко е минало добре:

# pstree
. пропуснете.
| -svscanboot - + - readproctitle
`-svscan
. пропуснете.
това означава, че svscanboot стартира и е готов да се поддържа услуги.

Сега накратко за това как тя работи всичко. На течаща система обработва дърво, свързана с daemontools изглежда така:

init- +
| -svscanboot - + - readproctitle
| `-svscan - + - контролира --- dnscache
| | -supervise --- Multilog
| | -supervise --- Qmail-изпрати - + - Qmail-чист
| | | -qmail-lspawn
| | | -qmail-rspawn
| | `-splogger
| | -supervise --- tcpserver
| | -supervise --- splogger
| `-supervise --- сепия - + - пренасочване
| | -10 * [пренасочване]
| `-unlinkd

(Допълнителни методи са изрязани)

Svscanboot стартира, когато системата за първоначален демон от inittab. Svscanboot svscan започва програмата в директория / услугата, която сме създали. Той ще съдържа информация за услугите, които ще следят daemontools - под-директории, по един за всяка услуга. В случай, че svscanboot пуснете го рестартира демон първоначален. Заключение работи svscan svscanboot readproctitle напред в процеса. Тя изглежда така:
Следван от 400 пиксела, така че не се притеснявайте да ги види в продукцията на PS - както е предвидено. Последните 400 байта на изход svscan замени тези условия. Това беше направено, за да бъде в състояние да видите какви проблеми, бягане к.с. -auxww.

Svscan служи за стартиране и услуги за проследяване. Тя минава през отделен процес упражняват надзор, е, който ще наблюдава на услугата, за всяка открита директорията, в / услуга (с изключение на тези, чиито имена започват с точка). Svscan на всеки 5 секунди, поставете отметка в директория / услугата за нови поддиректории. Ако те се намират, той започва ново копие контролира всяка директория. Ако поддиректорията услуга съдържа дневник директория, той ще бъде работещ друго копие на надзор и pippeline създадена между тях. Това се прави, за да може изходните сеч на програмата без да минава през Syslog - Използване на изхода програма от стандартния изход и STDERR. На daemontools за тези цели Execu Multilog програма - подмяна Syslog от DJB, макар че той работи по различни принципи. Например, dnscache на djbdns пакет показва информация за работата им не е в Syslog, както и за стандартния изход. Този изход се пренасочва към Multilog, което създава поддиректория в основните ви лог файлове и извършва ротация им. Също така, svscan пренасочва изхода на всички дъщерни дружества, за да контролира readproctitle чрез тръбопровод, предназначен svscanboot.

Readproctitle тече програма svcscanboot. В началото svscan, то STDERR и стандартния изход пренасочени към readproctitle. Вторият параметър се управлява определен брой точки (до 400). При получаване на стандартния вход на всеки вход, това го показва на мястото на тези точки. Това ви дава възможност веднага да се види грешката в списъка на процесите, използващи к.с. -auxww. (Опитът е показал, че е доста полезна функция). За да изчистите процес CMDLINE readproctitle след разрешаване на грешката, можете да стартирате скрипта, както следва:

#! / Bin / ш
ехо -н \
> "грешки услуги: \
. \
(Cut 18 идентични редове)
. \
"> / Proc /` pidof readproctitle` / ег / 0

Този скрипт изпраща низ "грешките на услуги:" на и 400 точки на стандартния вход на процеса чрез специален файл в / Proc. Можете просто да се създаде изпълними скриптове точки в / корен / хамбар, като по този начин, обикновено имат по пътя си.

Multilog пише поредица от линии от стандартния вход и добавя избрани линии в лог файл. Както си се движат параметри служат няколко оператора, всеки от които определя извършено действие на получените низ.
Всеки низ по подразбиране ще бъде записано.

оператор
Терминът изключва съдържащ шаблона.
оператор
избира термин съдържащ шаблона.
Тези правила се прилагат заместващия знак "*".

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

Отчет дисплеи първите 200 знака STDERR (което, както изглежда, ще падне в изходната readproctitle).

държавни файлове:

Операторът заменя съдържанието на файла на всеки един от избрания низ (първия 1000 байта).

Показване на времето:

Операторът добавя в началото на всеки ред символа @, точно клеймото (в TAI64 формат) и пространство. Тази декларация трябва да бъде на първо място. Превод време печат в електронен формат, можете да използвате tai64nlocal програма.

В регистрационните файлове:

Ако каталога оператор започва с точка или наклонена черта, тогава операторът добавя всеки избран ред в лог файла в дадена директория (ако директорията не съществува, създайте го Multilog). Регистрирането се извършва, както следва:
Каталогът съдържа редица стари дневници, дневникът с името на ток (текущата дневника), и други файлове, с които Multilog следи дейността им. Името на всеки лог файл започва с @, продължавайки клеймо посочва кога записа в дневника е приключило и се допълва от следните символи:
  • ите: Файлът е напълно завършена и правилно записани на диска.
  • ф: Писането на даден файл е бил завършен неправилно и може да бъде съкратено. Този файл не е била обработвана от оператора! Processor
оператор
Това е максималният размер на файла за последващо каталог оператор. Когато токът достигне този размер Multilog започва нов файл. Размер трябва да бъде между 4096 и 16777215 байта. Размерът по подразбиране - 99999 байта.
Операторът определя максималния брой на регистрационните файлове за последващо каталог оператор. Този параметър не трябва да бъде по-малко от 2. Стойността по подразбиране на - 10. Ако преименувате текущата Multilog файл премахва най-старият лог файл в директорията, ако техният брой е равен на или по-голяма от стойността на оператора.
Операторът определя процесора (програма-манипулатор) за последващ каталог оператор. Програмният текущия файл, ще бъдат прехвърлени към стандартния вход преди преди новия файл. изходна програма се съхранява в сегашния стар файл, след това се преименува и нова ток файл.