Sign in Join
Wiki copytemporary

Daemons and Services/ru: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: Daemons and Services/ru

OldNewLine
1+# Что такое демоны и службы?
2+
3+Unix демоны и службы windows-программ, работают без взаимодействия с пользователем. Например, " " www"' или "'ftp"' серверы называются демонами под linux и службами под windows. Поскольку они не взаимодействуют с пользователем, они закрывают свои stdin, stdout, stderr дескрипторы при запуске.
4+
5+Используя Free Pascal и Lazarus можно создавать демоны/службы в зависимости от платформы, используя пакет lazdaemon. Чтобы избежать конфликта имён с компонентами Delphi эти классы называются 'демонами' ('daemons').
6+
7+**Примечание:** Поскольку материал данной статьи нацелен на кроссплатформенное объяснение, то понятия «демон» и «служба» в ней означают одно и то же. Они не привязаны к какой-либо ОС, если о том не оговорено заранее. Однако, необходимо понимать, что в разных ОС есть свои нюансы, которые могут быть не учтены в данной статье.
8+
9+# Установка LazDaemon
10+
11+Прежде чем начать разработку службы или демона, установите пакет lazdaemon. Это можно сделать двумя способами: либо через пункт меню «Пакет/Установка и удаление пакетов» (Components / Configure installed packages), либо путем указания lpk файла из папки: lazarus/components/daemon/lazdaemon.lpk. Данный пакет устанавливает некоторые новые компоненты и элементы меню в среде разработки (IDE).
12+
13+# Классы
14+
15+## TCustomDaemon
16+
17+Данный класс реализует основную работу службы (демона) и является потомком TDataModule. Программа может использовать несколько классов TCustomDaemon и/или их экземпляров одновременно в одном процессе. Иными словами использовать многопоточность в своей работе.
18+
19+## TCustomDaemonApplication
20+
21+Класс TCustomApplication является потомком TCustomDaemon. Единственное отличие этого класса от TCustomDaemon, что он работает под windows, пока не получит сигнал Stop или под linux до тех пор, пока не поступит сигнал TERM.
22+
23+## TDaemonMapper
24+
25+Этот компонент выполняет регистрацию службы в системе. Каждый экземпляр службы должен быть указан в свойстве **DaemonDefs**.
26+
27+# Демоны(службы) - Пошаговая инструкция для ОС Windows
28+
29+- Когда демон запускается, ему могут быть переданы следующие параметры командной строки:
30+ - -i --install: регистрация демона в системе.
31+ - -u --uninstall: удаление регистрации демона в системе.
32+ - -r --run: запуск демона. Windows, как правило запускает службу автоматически.
33+- Создайте объект класса TDaemonMapper
34+- Для каждого пункта в свойстве *DaemonDefs* создайте объект класса TCustomDaemon.
35+- Зарегистрируйте, удалите регистрацию в системе или запустите каждый созданный объект.
36+- Каждый объект запустится в своём собственном потоке. Дождитесь сигнала Stop или TERM для его завершения.
37+
38+# Методы служб
39+
40+**Примечание:** Все методы должны возвратить *True* в случаи успешного выполнения.
41+
42+## Start
43+
44+Вызывается при запуске демона.
45+
46+## Stop
47+
48+Вызывается при остановке демона.
49+
50+## Shutdown
51+
52+Вызывается при уничтожении службы. Данный метод должен остановить службу и вернуть *True*. Он не работает под Linux. В Linux происходит уничтожение процесса демона без вызова данного метода.
53+
54+## Pause
55+
56+Вызывается, когда служба должна перейти в состояние «Пауза». В Linux он не работает, поскольку приостановкой и продолжением работы демона управляет ядро через сигналы STOP и CONT.
57+
58+## Continue
59+
60+Вызывается, когда служба возобновляет работу. Под Linux данный метод не работает.
61+
62+## Install
63+
64+Вызывается при регистрации службы в windows.
65+
66+## Uninstall
67+
68+Вызывается во время удаления службы из windows.
69+
70+## AfterUnInstall
71+
72+Вызывается после удаления windows службы.
73+
74+## HandleCustomCode
75+
76+Вызывается при получении специального сигнала от системы.
77+
78+## Начало Работы
79+
80+Перед созданием службы или демона убедитесь, что пакет "lazdaemon" установлен в Lazarus.
81+
82+# Пример использования
83+
84+В папке «examples/cleandir/», есть простой пример, демонстрирующий работу службы или демона. Прочтите README.txt для получения более подробной информации.
85+
86+# Установка службы
87+
88+## Windows
89+
90+Вы можете установить службу путем выполнения процесса с параметром Install. Диспетчер служб Windows сделает все остальное за вас. Вы можете настроить службу и её опции в диспетчере служб (service manager).
91+
92+См. также: [[ServiceManager]]
93+
94+## Linux (только для старых дистрибутивов Debian)
95+
96+Скачать, настроить, и "Сохранить как" - пример скрипта [Service Script](http://aurawin.com/lazarus/debian-service.sh).
97+
98+- SVC_ALIAS - полное описание вашего приложения
99+- SVC_FILENAME - имя файла, скомпилированного приложения-службы
100+- SVC_DIR - каталог, где находится приложение
101+- SVC_SERVICE_SCRIPT - имя файла, под которым вы сохраните скрипт
102+
103+Разместите скрипт в папке /etc/init.d/
104+
105+запустите службу, используя команду: "sudo service Имя_файла_с_скриптом start"
106+
107+Для того, чтобы автоматически запустить службу при загрузке системы, используйте update-rc.d или сторонние инструменты, каторые могут это сделать.
108+
109+Вариант 1:
110+
111+``` pascal
112+sudo update-rc.d Имя_вашего_скрипта defaults
113+```
114+
115+Вариант 2:
116+
117+``` pascal
118+sudo apt-get install chkconfig
119+sudo chkconfig --add Имя_вашего_скрипта
120+sudo chkconfig --level 2345 Имя_вашего_скрипта on
121+```
122+
123+## systemd (Fedora, Debian, SLES12)
124+
125+В настоящее время, Linux уходит от различий в способах запуска демонов в сторону единой модели служб.
126+
127+Fedora и SuSE Enterprise Linux Server 12 используют systemd и понимают те же команды запуска/остановки служб что и debian, однако есть различия в файлах конфигурации.
128+
129+- Выполните из командной строки: sudo gedit
130+- Скопируйте текст ниже:
131+
132+``` ini
133+[Unit]
134+Description=Описание вашего приложения
135+After=network.target
136+
137+[Service]
138+Type=simple
139+ExecStart=полный_путь_с_именем_файла -r
140+RemainAfterExit=yes
141+TimeoutSec=25
142+
143+[Install]
144+WantedBy=multi-user.target
145+```
146+
147+- Измените следующие значения
148+ - Description - полное описание вашей службы
149+ - ExecStart - имя файла с путем поиска скомпилированного приложения службы
150+
151+- В окне "Сохранить как"
152+ - Перейдите в /lib/systemd/system/
153+ - Сохраните файл с именем: имя_вашей_службы.service
154+
155+Пример конфигурационного файла systemd, находится в: [Service](http://aurawin.com/lazarus/fedora.service)
156+
157+# Смотрите также
158+
159+- [[ServiceManager]] - Пример модуля FreePascal для управления службами Windows
160+- [[Office Automation/ru|Office Automation]] - Взаимодействие с офисным программным обеспечением
161+
162+---
163+*From the Free Pascal wiki, page "Daemons and Services/ru", as it stood on 2022-01-09 after a change by Slawek, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history