Sign in Join
Wiki copytemporary

Daemons and Services/pl: what changed

Revision 4 to 5. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11Demony i usługi
22
33## Czym są demony, usługi i agenci?
44
55*Demony* (ang. deamons) Uniksa i *usługi* (ang. services) Windows to programy działające w całym systemie bez interakcji użytkownika; *Agenci* (ang. agents) MacOS to programy dla użytkowników (porównaj demony ogólnosystemowe), które mogą działać z interakcją użytkownika lub bez niej. Chociaż nazewnictwo jest różne, ich funkcja jest podobna: na przykład serwery **www** lub **ftp** są nazywane demonami pod Linuksem, a usługami pod Windows. Ponieważ nie wchodzą w bezpośrednią interakcję z użytkownikiem, na początku zamykają swoje deskryptory stdin, stdout i stderr.
66
77Dzięki Free Pascal, Lazarus można pisać te demony/usługi niezależnie od platformy za pomocą pakietu Lazarus lazdaemon. Aby uniknąć konfliktów nazw z komponentami Delphi, klasy te nazywane są 'demonami' (daemons).
88
99## Instalacja LazDaemon
1010
1111Zanim zaczniesz, zainstaluj pakiet lazdaemon. Albo przez menu Pakiet -\> Instaluj/odinstaluj pakiety... i wybranie do z listy Pakietów do zainstalowania, albo przez otwarcie/instalację pliku lpk bezpośrednio ze cieżki z zainstalowanym Lazarusem: lazarus/components/daemon/lazdemon.lpk. Ten pakiet instaluje kilka nowych komponentów i elementów menu w IDE:
1212
1313W menu **Plik - Nowy...:**, w oknie dialogowym pojawią się 3 nowe pozycje pod nagłówkiem: **"Daemon (service) applications":**
1414
1515- Daemon (service) applications
1616- Daemon Module
1717- Daemon mapper
1818
1919## Klasy
2020
2121### TCustomDaemon
2222
2323To jest potomek TDataModule, który wykonuje całą pracę. Może być kilka klas i/lub instancji TCustomDaemons działających w tym samym czasie i w tym samym procesie (wielowątkowym).
2424
2525### TCustomDaemonApplication
2626
2727To jest potomek klasy TCustomApplication, który tworzy TCustomDaemons. Nie wymaga on żadnych zmian. Działa w systemie Windows do momentu odebrania wywołania Stop lub w systemie Linux do sygnału TERM.
2828
2929### TDaemonMapper
3030
3131Ten składnik obsługuje rejestrację usługi. Każda jego instancja wymaga jednego wpisu we właściwości **DaemonDefs**.
3232
3333## Demon - Krok po kroku
3434
3535- Gdy demon jest uruchamiany, analizowane są parametry wiersza poleceń. Wstępnie zdefiniowane są:
3636 - -i --install: zarejestruj demona. Nie ma to żadnego wpływu pod Uniksem.
3737 - -u --uninstall: wyrejestruj demona. Nie ma to żadnego wpływu pod Uniksem.
3838 - -r --run: uruchom demona. Windows zwykle robi to sam.
3939- Utwórz TDaemonMapper
4040- Utwórz jeden TCustomDaemon dla każdego wpisu *DaemonDefs*.
4141- instaluj, odinstaluj lub uruchom każdą instancję.
4242- jeśli działa: uruchom każdą instancję we własnym wątku, a następnie poczekaj na sygnał Stop/TERM.
4343
4444## Metody demona
4545
4646Start
4747Wywoływana, gdy demon powinien się uruchomić. Ta metoda musi natychmiast zwrócić wartość *True*.
4848
4949Stop
5050Wywoływana, gdy demon powinien się zatrzymać. Ta metoda musi natychmiast zwrócić wartość *True*.
5151
5252Shutdown
5353Wywoływana, gdy demon powinien zostać zabity. Ta metoda musi natychmiast zatrzymać demona i zwrócić wartość *True*. Nie jest to uruchamiane pod Linuksem. Linux po prostu zabija demona.
5454
5555Pause
5656Wywoływana, gdy demon powinien się zatrzymać. Ta metoda musi natychmiast zwrócić wartość *True*. W Linuksie nie jest to uruchamiane, ponieważ jądro zatrzymuje całego demona na sygnał STOP i kontynuuje go na sygnał CONT.
5757
5858Continue
5959Wywoływana, gdy demon powinien kontynuować pracę po przerwie. Ta metoda musi natychmiast zwrócić wartość *True*. W Linuksie nie jest to uruchamiane.
6060
6161Install
6262Wywoływana, gdy demon jest zarejestrowany jako usługa systemu Windows. Ta metoda powinna zwrócić wartość *True* w przypadku powodzenia.
6363
6464Uninstall
6565Wywoływana, gdy demon jest wyrejestrowany jako usługa systemu Windows. Ta metoda powinna zwrócić wartość *True* w przypadku powodzenia.
6666
6767AfterUnInstall
6868Wywoływana po tym, jak demon został wyrejestrowany jako usługa systemu Windows. Ta metoda powinna zwrócić wartość *True* w przypadku powodzenia.
6969
7070HandleCustomCode
7171Wywoływana, gdy do demona został wysłany specjalny sygnał. Ta metoda powinna zwrócić wartość *True* w przypadku powodzenia.
7272
7373### Pierwsze kroki
7474
7575Zanim będziesz mógł stworzyć aplikację Service lub Daemon, musisz najpierw upewnić się, że zainstalowałeś pakiet Lazarus Daemon "lazdemon".
7676
7777## Przykład
7878
7979W katalogu examples/cleandir/ znajduje się prosty przykład. Przeczytaj README.txt.
8080
8181## Instalacja usługi
8282
8383### Windows
8484
8585Możesz zainstalować usługę, wykonując proces z parametrem Install. Menedżer usług Windows zrobi resztę za Ciebie. Możesz skonfigurować usługę i jej opcje za pomocą menedżera usług.
8686
8787Zobacz także: [[ServiceManager/pl|Menedżer usług]]
8888
8989#### Kodowanie systemowe / UTF-8
9090
9191Projekt LazDeamon działa z domyślną stroną kodową, a nie UTF-8. Tryb *-dDisableUTF8RTL* należy aktywować za pomocą opcji z menu *Projekt* -\> *Opcje projektu...* -\> *Opcje kompilatora* -\> *Dodatki i wymuszenia* -\> *Użyj kodowania systemowego*.
9292
9393### Linux (tylko dla starszych wersji Debiana)
9494
9595Pobierz, skonfiguruj i "Zapisz jako" - przykładowy skrypt znajdujący się w Web Archive: [1](https://web.archive.org/web/20130209102726/http://aurawin.com/lazarus/debian-service.sh) ( Oryginalny link jest martwy od dłuższego czasu).
9696
9797- SVC_ALIAS to długi opis Twojej aplikacji
9898- SVC_FILENAME to rzeczywista nazwa pliku skompilowanej aplikacji usługi
9999- SVC_DIR to miejsce, w którym skopiowałeś aplikację usługi
100100- SVC_SERVICE_SCRIPT to ostateczna nazwa pliku service.sh stosowana w „Zapisz jako”, dostosowana do skryptu debian-service.sh.
101101
102102Umieść swój skrypt w folderze /etc/init.d/
103103
104104uruchom usługę, za pomocą komendy "sudo service Name_Of_Your_Script start"
105105
106106> **Note:** sudo ma kilka odmian, np.:
107107>
108-> \
109-> `sudo -s #`\
110-> \
111-> `sudo -H #`\
112-> \
113-> `sudo -i  #`\
114-> \
115-> `sudo su  #`\
108+> ```text
109+> sudo -s #
110+> sudo -H #
111+> sudo -i #
112+> sudo su #
113+> ```
114+>
116115> \
117116> `sudo sh  #`
118117
119118Aby automatycznie uruchomić usługę przy starcie, możesz spróbować update-rc.d, w przeciwnym razie będziesz potrzebować narzędzia innej firmy, które to zrobi.
120119
121120Opcja 1
122121
123122``` bash
124123sudo update-rc.d Name_Of_Your_Script defaults
125124```
126125
127126Opcja 2
128127
129128``` bash
130129sudo apt-get install chkconfig
131130sudo chkconfig --add Name_Of_Your_Script
132131sudo chkconfig --level 2345 Name_Of_Your_Script on
133132```
134133
135134### systemd (Fedora, Debian, SLES12)
136135
137136Obecne odmiany Linuksa odchodzą od uruchamiania różnych demonów na rzecz ujednoliconego modelu usług.
138137
139138Fedora i SuSE Enterprise Linux Server 12 używają systemd, a polecenia uruchamiania/zatrzymywania usług są takie same jak w Debianie, ale istnieją różnice w plikach konfiguracyjnych.
140139
141140- Z wiersza polecenia wykonaj: sudo gedit
142141- Kopiuj i wklej poniższy kod
143142
144143``` ini
145144[Unit]
146145Description=Długi opis Twojej aplikacji
147146After=network.target
148147
149148[Service]
150149Type=simple
151150ExecStart=pełna_ścieżka_i_nazwa_pliku -r
152151RemainAfterExit=yes
153152TimeoutSec=25
154153
155154[Install]
156155WantedBy=multi-user.target
157156```
158157
159158- Edytuj następujące wartości
160159 - Description - Długi opis aplikacji serwisowej
161160 - ExecStart — pełna ścieżka_i_nazwa_pliku to nazwa skompilowanej aplikacji usługi wraz z pełną ścieżką
162161
163162- Zapisz jako okno dialogowe
164163 - Przejdź do /lib/systemd/system/
165164 - Nazwij plik nazwa_twojej_usługi.service
166165
167166## Zobacz także
168167
169168- [[ServiceManager/pl|Menedżer usług]] Przykład dla modułu Free Pascal do zarządzania usługami Windows
170169- [[macOS daemons and agents]] - macOS natywnie używający launchd
171170- [[Office Automation]] - Interakcja z oprogramowaniem biurowym
172171- [Oswajanie demona: PDF autorstwa Michaëla Van Canneyt](https://www.freepascal.org/~michael/articles/daemons/daemons.pdf)
173172- [Przydatna dyskusja z małą działającą aplikacją demona](http://forum.lazarus.freepascal.org/index.php/topic,22983.msg152303.html#msg152303)
174173- [[Docker Containerization]] - Konteneryzacja jako sposób na łatwe tworzenie demonów / usług
175174
176175---
177176*From the Free Pascal wiki, page "Daemons and Services/pl", 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