Komponent
PmRtManager służy do podwyższenia stabilności i bezpieczeństwa urochomionych aplikacji (zwłaszcza aplikacji PROMOTIC).
Aplikacje PROMOTIC są bardzo często wytwarzane tak, aby działały
24 godzin na dobę przez
365 dni w roku. Często takie aplikacje są umieszczone w odległych punktach gdzie obsługa przychodzi bardzo rzadko. Przy tym wszystkim jest wymagane, żeby przy jakiejkolwiek usterce system zregenerował się. W tym przypadku, żeby aplikacja (lub komputer) uruchomiła się ponownie.
Do tych celów w świecie programowania jest przeznaczony rodzaj programów użytkowych zwany
WatchDog (pilnujący pies). Zazwyczaj jest to mały program, który służy do pilnowania innych oprogramowań (w naszym przypadku aplikacji PROMOTIC). Jeżeli aplikacja nioczekiwanie się zatrzyma ("zawiesi się", ktoś ją wyłączy, itd.), wtedy program
WatchDog tę aplikację zrestartuje (wyłączy ją i ponownie uruchomi) lub zrestartuje cały komputer. Po zrestartowaniu komputera
WatchDog również zapewnia początkowe uruchomienie żądanych aplikacji.
W systemie PROMOTIC jest do tego celu przeznaczony program użytkowy PmRtManager.exe (patrz
PmRtManager - Manager uruchomionych aplikacji).
Podczas swego uruchomienia
PmRtManager odczyta ustawienia z pliku
PmRtManager.ini w folderze
\GCfg. Następnie
PmRtManager uruchomi wymagane (pilnowane) aplikacje (programy), przyszereguje i ustawi im liczniki i następnie te liczniki periodycznie obniża. Jeżeli któryś z liczników (counter) osiągnie wartość 0, wtedy
PmRtManager zakłada, że aplikacja "zawiesiła się" i ponownie ją zrestartuje (lub zrestartuje cały komputer). Żeby
PmRtManager powtórnie nie restartował aplikacji PROMOTIC, ta powinna z kolei regularnie wywołać metodę
Pm.WDogRefresh. Przez wywołanie tej metody liczniki ustawi się ponownie na wymaganą wartość początkową. Jeżeli aplikacja wywołuje tę metodę regularnie, wtedy
PmRtManager nigdy nie obniży wartości licznika do 0 (a więc nigdy nie zrestartuje aplikacji).
Menedżer uruchomionych aplikacji
PmRtManager może być uruchomiony albo jako usługa
Windows lub jako zwykła aplikacja, jednak uruchamianie, zatrzymywanie oraz pilnowanie uruchomionych aplikacji działa identycynie. Parametry programu patrz
PmRtManager jako usługa Windows.
Przykład:
Przykład pliku PmRtManager.ini w folderze \GCfg (dla 2 programów): [Global]
Period=1000
' Period obniżania liczników (w milisekundach)
Password=pm
' Hasło do zezwolenia wyłączenia PmRtManager.exe
WebServer=http://+:81/
' Ustawia port, na którym będzie możliwe przy pomocy HTTP monitorować (tylko wyświetlać) działanie PmRtManager.
Jeżeli nie jest ustawione, wtedy zostanie zastosowany port 81.
[Program1]
' Nazwa 1. pilnowanego programu
' Parametr dla 1. pilnowanego programu
RestartOtherProgram=2
' Jeżeli PmRtManager zakończy 1. program, wtedy zakończy się również program z numerem przedstawionym na tej pozycji
StartDelay=5
' Zwłoka pomiędzy uruchomieniem PmRtManager.exe i uruchomieniem programu 1. Wartość jest w jednostkach "Period".
IniCounter=1000
' Wartość, która zostanie zapisana do licznika przy uruchomieniu programu. Jeżeli wartość ta jest równa 0, wtedy program nie jest pilnowany. Licznik obniża wartość o 1 w okresie "Period".
StopDelay=5
' Zwłoka pomiędzy zakończeniem i ponownym uruchomieniem programu (lub restartem SO Windows). Wartość jest w jednostkach "Period".
RestartWindows=0
' Jeżeli 1. program po uruchomieniu ani razu nie ustawi licznika i licznik dojdzie do 0, wtedy: jeżeli RestartWindows=1, wtedy zaraz zostanie zrestartowany komputer, jeżeli RestartWindows=0, wtedy spróbuje 1. program zakończyć i uruchomić ponownie.
RestartProgram=-1
' Ilość prób, ile razy PmRtManager spróbuje zakończyć i ponownie uruchomić program zanim zrestartuje cały komputer. Jeżeli RestartProgram=-1, wtedy ilość prób nie jest ograniczona.
[Program2]
Name=C:\Winnt\System32\Calc.exe
Parameter=
RestartOtherProgram=0
StartDelay=0
IniCounter=0
StopDelay=5
RestartWindows=0
RestartProgram=0
Wskazówki:
- Jeżeli nie chcesz pilnować biegu programu tylko chcesz go uruchomić, wtedy ustaw IniCounter=0.
- W celu zabronienia restartowania Windows ustaw pozycje RestartWindows=0 oraz RestartProgram=-1.
- Chcesz pilnować bieg Program1. Program2 nie chcesz pilnować tylko chcesz go zatrzymywać i ponownie uruchamiać w zależności od Program1.
Rozwiązanie: W pliku
PmRtManager.ini wprowadź w sekcji
[Program1] klucz
RestartOtherProgram=2 a następnie w sekcji
[Program2] ustaw klucz
IniCounter=0.
- Jeżeli jest ustawiona pozycja LogEnable=1, wtedy są zdarzenia PmRtManager zapisywane do pliku PmRtManager.log, który wytworzy się automatycznie w folderze, w którym znajduje się plik PmRtManager.exe.
Poszczególne fazy pilnowania programu:
Każdy program posiada swój niezależny licznik i każdy program może znajdować się w innej fazie (w innym stanie pilnowania). Fazy można stwierdzić w głównym erkanie programu
PmRtManager lub przy pomocy monitoringu HTTP.
Nastzępuje opisanie poszczególnych faz programu:
Ini - Inicjalizacja zmiennych. Następnie przejdzie do fazy StartDelay.
StartDelay - Jeżeli jest wprowadzona wartość opóźnienia StartDelay różna od zera, wtedy PmRtManager czeka określony czas. Po upłynięciu tego czasu (lub zaraz, jeżeli StartDelay nie jest wprowadzony lub jest równy 0), PmRtManager uruchomi odpowiedni program i napełni jemu przyszeregowany licznik wartością IniCounter. Jeżeli IniCounter jest różny od 0, wtedy przejdzie do fazy Control. Jeżeli IniCounter nie jest wprowadzony lub jego wartość wynosi 0 (tzn. program nie ma być pilnowany), wtedy przejdzie do fazy NoControl
Control - PmRtManager regularnie obniża wartość licznika o częstotliwości określonej w parametrze Period (w PmRtManager.ini). Przy obniżeniu wartości licznika do 0 (to znaczy, że pilnowany program niezdążył ponownie ustawić tego licznika), wykona czynność w zależności od parametrów RestartWindows oraz RestartProgram (patrz przykład PmRtManager.ini niżej). Według tego przejdzie się do fazy RequestStop lub RestartWin.
RequestStop - PmRtManager zakończy program. Następnie przejdzie do fazy StopDelay.
StopDelay - PmRtManager czeka na zakończenie programu (przed jego ponownym uruchomieniem) okres określony w StopDelay. Po zakończeniu tego okresu przejście do fazy Ini.
NoProgram - Program nie został wprowadzony w PmRtManager.ini. PmRtManager zatrzymał obsługę tego programu.
NoControl - Program został uruchomiony i nie jest pilnowany. Pozycja IniCounter była ustawiona na 0. PmRtManager może ten program zakończyć i ponownie uruchomić w zależności od innego programu i pozycji RestartOtherProgram.
RestartWin - SO Windows zostanie ponownie uruchomiony.
Uwaga!
Menedżer uruchomionych aplikacji
PmRtManager (nowy
WatchDog) w pełni zastępuje poprzedni program
PmWDog.exe, który już nie jest częścią składową pakietu instalacyjnego PROMOTIC. Podstawowe konfiguratory wewnątrz pliku konfiguracyjnego są zgodne dla obu wersji
PmWDog.exe, dlatego ewentualne przejście na nową wersję
WatchDog jest proste. W sumie wystarczy zkopiować stary plik konfiguracyjny
PmWDog.ini, zmienić jego nazwę na
PmRtManager.ini i zkopiować go do foldera z programem
PmRtManager.exe.
Notatka!
Własny plik uruchamiający (np. plik
autostart.bat) należy zapisać do foldera zawierającym plik
PmRtManager.exe a jego skrót w
Windows folderze Autostart ('Po uruchomieniu'). Patrz
Oprogramowanie RunLater.