Daemons and Services/pl
English · Español · Français · Polski · Português · Русский · 中文(中国)
Demony i usługi
Czym są demony, usługi i agenci?
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.
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 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:
W menu Plik - Nowy...:, w oknie dialogowym pojawią się 3 nowe pozycje pod nagłówkiem: "Daemon (service) applications":
- Daemon (service) applications
- Daemon Module
- Daemon mapper
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
- 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 examples/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: Menedżer usług
Kodowanie systemowe / UTF-8
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"
Note: 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 defaultsOpcja 2
sudo apt-get install chkconfig
sudo chkconfig --add Name_Of_Your_Script
sudo chkconfig --level 2345 Name_Of_Your_Script onsystemd (Fedora, Debian, SLES12)
Obecne odmiany Linuksa odchodzą od uruchamiania różnych demonów na rzecz ujednoliconego modelu usług.
Fedora 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.
- Z wiersza polecenia wykonaj: sudo gedit
- Kopiuj i wklej poniższy kod
[Unit]
Description=Długi opis Twojej aplikacji
After=network.target
[Service]
Type=simple
ExecStart=pełna_ścieżka_i_nazwa_pliku -r
RemainAfterExit=yes
TimeoutSec=25
[Install]
WantedBy=multi-user.target- Edytuj następujące wartości
- Description - Długi opis aplikacji serwisowej
- ExecStart — pełna ścieżka_i_nazwa_pliku to nazwa skompilowanej aplikacji usługi wraz z pełną ścieżką
- Zapisz jako okno dialogowe
- Przejdź do /lib/systemd/system/
- Nazwij plik nazwa_twojej_usługi.service
Zobacz także
- Menedżer usług Przykład dla modułu Free Pascal do zarządzania usługami Windows
- macOS daemons and agents - macOS natywnie używający launchd
- Office Automation - Interakcja z oprogramowaniem biurowym
- Oswajanie demona: PDF autorstwa Michaëla Van Canneyt
- Przydatna dyskusja z małą działającą aplikacją demona
- Docker Containerization - Konteneryzacja jako sposób na łatwe tworzenie demonów / usług
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.