Envato Elements - pobierasz co chcesz, ile chcesz

Ostatnio jedna z usług „działających w tle” na moim komputerze zaczęła szwankować, prawdopodobnie ze względu na to, że najczęściej korzystam z hibernacji zamiast zamykać system (wygoda i czas), i podczas wzbudzania coś się dziej z nią niedobrego, i przestaje działać, a przyznam, że nie mam czasu ani ochoty sprawdzać, czy na pewno działa – ma działać automatycznie w tle i tyle…

Dlatego postanowiłem przygotować mały skrypt (zwykły BAT/CMD) uruchamiany „raz na jakiś czas” za pomocą systemowego harmonogramu zadań, który ma m.in. sprawdzić czy usługa działa, w i razie konieczności ją ponownie uruchomić (zrestartować).

Kontrola stanu usługi w systemie Windows

Skrypt zaczyna swoją pracę od wywołania funkcji sprawdzającej za pomocą komendy „sc”  status monitorowanej usługi (RUNNING), i jeśli kod błędu będzie równy 1 (usługa prawdopodobnie nie działa), w tym momencie wywoływana jest funkcja odpowiedzialna za ponowne włączenie usługi:

:CzyUslugaOK
    sc query JakasUslugaService | Find "RUNNING"
        if %errorlevel% == 1 call:StartUslugi
GOTO:EOF

:StartUslugi
    net stop JakasUslugaService
    net start JakasUslugaService
    if %errorlevel% == 2 call:StartUslugi
    if %errorlevel% == 0 timeout 5
    if %errorlevel% == 0 start "JakasUsluga" "C:\(...)\JakasUslugaTray.exe"
    if %errorlevel% == 0 exit
GOTO:EOF

call:CzyUslugaOK

Choć powyżej to wersja przygotowana na potrzeby tego wpisu, bo u mnie działa to w połączeniu z jeszcze jedną funkcją, która sprawdza czy dostępny jest określony zasób dyskowy:

:CzyDyskOK
@IF EXIST "x:\status.txt" (
    call:CzyUslugaOK
) ELSE (
    timeout 60
    call:CzyDyskOK
)
GOTO:EOF

CzyUslugaOK
    sc query JakasUslugaService | Find "RUNNING"
        if %errorlevel% == 1 call:StartUslugi
GOTO:EOF

StartUslugi
    net stop JakasUslugaService
    net start JakasUslugaService
    if %errorlevel% == 2 call:StartUslugi
    if %errorlevel% == 0 timeout 5
    if %errorlevel% == 0 start "JakasUsluga" "C:\(...)\JakasUslugaTray.exe"
    if %errorlevel% == 0 exit
GOTO:EOF

call:CzyDyskOK

Po prostu usługa obecnie ma wyłączony automatyczne uruchamianie wraz z systemem – i tak zawodziło, a dodatkowo pierwsze uruchomienie powinno mieć miejsce dopiero po podłączeniu i odblokowaniu dodatkowego dysku.

Dlatego najpierw skrypt sprawdza czy na określonym dysku znajduje się kontrolny plik „status.txt” – jeśli go nie ma, daje mi (kolejne) 60 sekund czasu na podłączenie, i dopiero gdy wykryje zdefiniowany plik przystępuje do uruchomiania usługi.

(!) Zgłoś błąd na stronie
Potrzebujesz profesjonalnej pomocy? Skontaktuj się z nami!
Spodobał Ci się artykuł? Zapisz się do naszego Newslettera - ZERO SPAMu, same konkrety, oraz dostęp do dodatkowych materiałów przeznaczonych dla subskrybentów!
Na podany adres e-mail otrzymasz od nas wiadomość e-mail, w której znajdziesz link do potwierdzenia subskrypcji naszego Newslettera. Dzięki temu mamy pewność, że nikt nie dodał Twojego adresu przez przypadek. Jeśli wiadomość nie przyjdzie w ciągu najbliższej godziny (zazwyczaj jest to maksymalnie kilka minut) sprawdź folder SPAM.
Młody Szymon pomógł tacie zapisać się do Newslettera WebInsider.pl i... teraz idzie popływać
WebInsider poleca księgowość wFirma
WebInsider korzysta z VPSa w HitMe.pl
WebInsider poleca VPSy DigitalOcean
WebInsider poleca serwis Vindicat
Napisz komentarz
wipl_napisz-komentarz_01Jeśli informacje zawarte na tej stronie okazały się pomocne, możesz nam podziękować zostawiając poniżej swój komentarz.

W tej formie możesz również zadać dodatkowe pytania dotyczące wpisu, na które – w miarę możliwości – spróbujemy Ci odpowiedzieć.
Linki partnerskie
Niektóre z linków na tej stronie to tzw. „linki partnerskie”, co oznacza, że jeśli klikniesz na link i dokonasz wymaganej akcji (np. zakup/rejestracja) możemy otrzymać za to prowizję. Pamiętaj, że polecamy tylko te produkty i usługi, z których sami korzystamy, i uważamy, że są tego na prawdę warte… :-)
Znaki towarowe i nazwy marek
W niektórych wpisach (oraz innych miejscach na stronie) mogą być przedstawione/użyte znaki towarowe i/lub nazwy marek, które stanowią własność intelektualną tych podmiotów, a zostały użyte wyłącznie w celach informacyjnych.
Młody Szymon pomógł tacie zapisać się do Newslettera WebInsider.pl i... teraz idzie popływać