Difference between revisions of "Daemons and Services/pl"
(→Windows: tłumaczenie na j. polski) |
(→Linux (only for older Debian): tłumaczenie na j. polski) |
||
Line 79: | Line 79: | ||
Projekt 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''. | Projekt 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''. | ||
− | === Linux ( | + | === Linux (tylko dla starszych wersji Debiana) === |
− | + | Pobierz, skonfiguruj i "Zapisz jako" - przykładowy skrypt znajdujący się w Web Archive: [https://web.archive.org/web/20130209102726/http://aurawin.com/lazarus/debian-service.sh] ( Oryginalny link jest martwy od dłuższego czasu). | |
− | *SVC_ALIAS | + | *SVC_ALIAS to długi opis Twojej aplikacji |
− | *SVC_FILENAME | + | *SVC_FILENAME to rzeczywista nazwa pliku skompilowanej aplikacji usługi |
− | *SVC_DIR | + | *SVC_DIR to miejsce, w którym skopiowałeś aplikację usługi |
− | *SVC_SERVICE_SCRIPT | + | *SVC_SERVICE_SCRIPT to ostateczna nazwa pliku service.sh stosowana w „Zapisz jako”, dostosowana do skryptu debian-service.sh. |
− | + | Umieść swój skrypt w folderze /etc/init.d/ | |
− | + | uruchom usługę, za pomocą komendy "sudo service Name_Of_Your_Script start" | |
− | {{Note|sudo | + | {{Note|sudo ma kilka odmian, np.: |
<br/>sudo -s # | <br/>sudo -s # | ||
<br/>sudo -H # | <br/>sudo -H # | ||
Line 99: | Line 99: | ||
<br/>sudo sh # }} | <br/>sudo sh # }} | ||
− | + | Aby 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. | |
− | + | Opcja 1 | |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
sudo update-rc.d Name_Of_Your_Script defaults | sudo update-rc.d Name_Of_Your_Script defaults | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | Opcja 2 | |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
sudo apt-get install chkconfig | sudo apt-get install chkconfig |
Revision as of 01:38, 9 January 2022
│
English (en) │
español (es) │
français (fr) │
polski (pl) │
português (pt) │
русский (ru) │
Czym są demony, usługi i agenci?
With Free Pascal, Lazarus it is possible to write these daemons/services platform-independent via the Lazarus lazdaemon package. To avoid name conflicts with the Delphi components these classes are called 'daemons'. Dzię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).
Instalacja LazDaemon
Zanim zaczniesz, zainstaluj pakiet lazdemon. Albo przez Komponenty / Konfiguruj zainstalowane pakiety, albo przez otwarcie/instalację pliku lpk bezpośrednio: lazarus/components/daemon/lazdemon.lpk. Ten pakiet instaluje kilka nowych komponentów i elementów menu w IDE:
W menu Plik - Nowy: 3 pozycje pojawiają się w oknie dialogowym, pod nagłówkiem: "Aplikacje Daemon(usług)":
Klasy
TCustomDaemon
To 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).
TCustomDaemonApplication
To 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.
TDaemonMapper
Ten składnik obsługuje rejestrację usługi. Każda jego instancja wymaga jednego wpisu we właściwości DaemonDefs.
Demon - Krok po kroku
- When the daemon is started the command line parameters are parsed. The following are predefined:
- Gdy demon jest uruchamiany, analizowane są parametry wiersza poleceń. Wstępnie zdefiniowane są:
- -i --install: zarejestruj demona. Nie ma to żadnego wpływu pod Uniksem.
- -u --uninstall: wyrejestruj demona. Nie ma to żadnego wpływu pod Uniksem.
- -r --run: uruchom demona. Windows zwykle robi to sam.
- Utwórz TDaemonMapper
- Utwórz jeden TCustomDaemon dla każdego wpisu DaemonDefs.
- instaluj, odinstaluj lub uruchom każdą instancję.
- jeśli działa: uruchom każdą instancję we własnym wątku, a następnie poczekaj na sygnał Stop/TERM.
Metody demona
- Start
- Wywoływana, gdy demon powinien się uruchomić. Ta metoda musi natychmiast zwrócić wartość True.
- Stop
- Wywoływana, gdy demon powinien się zatrzymać. Ta metoda musi natychmiast zwrócić wartość True.
- Shutdown
- Wywoł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.
- Pause
- Wywoł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.
- Continue
- Wywoływana, gdy demon powinien kontynuować pracę po przerwie. Ta metoda musi natychmiast zwrócić wartość True. W Linuksie nie jest to uruchamiane.
- Install
- Wywoływana, gdy demon jest zarejestrowany jako usługa systemu Windows. Ta metoda powinna zwrócić wartość True w przypadku powodzenia.
- Uninstall
- Wywoływana, gdy demon jest wyrejestrowany jako usługa systemu Windows. Ta metoda powinna zwrócić wartość True w przypadku powodzenia.
- AfterUnInstall
- Wywoływana po tym, jak demon został wyrejestrowany jako usługa systemu Windows. Ta metoda powinna zwrócić wartość True w przypadku powodzenia.
- HandleCustomCode
- Wywoływana, gdy do demona został wysłany specjalny sygnał. Ta metoda powinna zwrócić wartość True w przypadku powodzenia.
Pierwsze kroki
Zanim będziesz mógł stworzyć aplikację Service lub Daemon, musisz najpierw upewnić się, że zainstalowałeś pakiet Lazarus Daemon "lazdemon".
Przykład
W katalogu example/cleandir/ znajduje się prosty przykład. Przeczytaj README.txt.
Instalacja usługi
Windows
Moż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.
Zobacz także: ServiceManager
Kodowanie systemowe / UTF-8
A LazDeamon project is working with default, not UTF-8, codepage. The -dDisableUTF8RTL mode has to be activated with Project Options ... -> Compiler Options -> Additions and Overrides -> Use system encoding.
Projekt 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.
Linux (tylko dla starszych wersji Debiana)
Pobierz, skonfiguruj i "Zapisz jako" - przykładowy skrypt znajdujący się w Web Archive: [1] ( Oryginalny link jest martwy od dłuższego czasu).
- SVC_ALIAS to długi opis Twojej aplikacji
- SVC_FILENAME to rzeczywista nazwa pliku skompilowanej aplikacji usługi
- SVC_DIR to miejsce, w którym skopiowałeś aplikację usługi
- SVC_SERVICE_SCRIPT to ostateczna nazwa pliku service.sh stosowana w „Zapisz jako”, dostosowana do skryptu debian-service.sh.
Umieść swój skrypt w folderze /etc/init.d/
uruchom usługę, za pomocą komendy "sudo service Name_Of_Your_Script start"
Uwaga: sudo ma kilka odmian, np.:
sudo -s #
sudo -H #
sudo -i #
sudo su #
sudo sh #
Aby 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.
Opcja 1
sudo update-rc.d Name_Of_Your_Script defaults
Opcja 2
sudo apt-get install chkconfig
sudo chkconfig --add Name_Of_Your_Script
sudo chkconfig --level 2345 Name_Of_Your_Script on
systemd (Fedora, Debian, SLES12)
Presently, linux flavors are trending away from differing daemon launching and into a unified service model.
Fedora and SuSE Enterprise Linux Server 12 use systemd and with that commands to start/stop services are the same as on debian but there are differences on the configuration files.
- From the command prompt sudo gedit
- Copy and Paste
[Unit]
Description=Long description of your application
After=network.target
[Service]
Type=simple
ExecStart=complete_path_and_file_name -r
RemainAfterExit=yes
TimeoutSec=25
[Install]
WantedBy=multi-user.target
- Edit the following values
- Description - Long Description of your service application
- ExecStart - complete-path_and_file_name is the name of your compiled service application with its complete path
- Save As Dialog
- Navigate to /lib/systemd/system/
- Name the file the name_of_your_service.service
See also
- ServiceManager Example for the Free Pascal unit for managing Windows services
- macOS daemons and agents - macOS native using launchd
- Office Automation
- Taming the daemon: PDF by Michaël Van Canneyt
- Useful discussion with small working daemon application
- Docker Containerization - Containerization as a means to create daemons / services easily