Skocz do zawartości

Watchdog


Gość mackowiakp

Rekomendowane odpowiedzi

Gość mackowiakp

Nie jest chyba tajemnicą że nboxowi uda się czasami zawiesić. Mam nboxa zakupionego na Allegro, po przeróbkach wszystkich (kondensatory itp) więc wydaje się sprawny. Zainstalowałem najnowszy soft dostępny na forum, w miejsce OpenPLi 8.3 jaki był oryginalnie.

Dziś nastąpił zwis. Dostałem się do nboxa po SSH i wykonałem komendę:

 

/usr/bin/system.sh restart

 

Ale konsola "wisiała". Nacisnąłem CTRL-C, czyli przerwałem wykonywanie się tej komendy i konsola była cały czas aktywna.

Próbowałem też zmienić kanał poprzez komendę:

 

wget -q -O /dev/null -q http://127.0.0.1/web/zap?sRef=1:0:1:3DD2:640:13E:820000:0:0:0:

 

Ale też konsola zwisła i użyłem CTRL-C żeby przerwać

Jednocześnie WebIf od oscama działał i pokazywał że nbox w ogóle nie odpytuje karty o uprawnienia mimo że był ustawiony do odbioru kanału kodowanego z tejże karty

 

Pomogło dopiero:

 

sync; init 6

 

W związku z tym pomyślałem sobie o napisaniu watchdoga (skrypt umieszczony w /var/bin) który uruchamiany byłby 10 min po starcie systemu, wywoływany np co minutę i miałby mnie więcej taką postać:

 

cd /var/bin

rm -f power*

wget -q -T 15 http://127.0.0.1/web/powerstate

 

normalnie w katalogu /var/bin powinien pojawić się plik powerstate. Jeżeli plik taki nie powstanie, to znaczy że trzeba zrobić:

 

sync && init 6

 

Proponuję wykorzystanie WebApi bo jak podejrzałem plik /usr/bin/system.sh restart to taka komenda tak naprawę wywołuje w tym przypadku polecenie

 

wget -q -O /dev/null http://127.0.0.1/web/powerstate?newstate=2

 

Na którym to poleceniu "zwisło mi" przy próbie wykonania komendy: -> /usr/bin/system.sh restart

Pytanie czy dobrze myślę? A może ktoś stworzył już takiego watchdoga?

Odnośnik do komentarza
Udostępnij na innych stronach

napiszę tak:

- zamykanie enigmy2 za pomocą webifa to taki lekki overkill. Wystarczy zwykłe killall enigma2. (zwracam uwagę na brak numerka)

- niezależnie czy webif, czy kill, ta komenda powinna być uruchomiona w oddzielnym wątku, po to właśnie aby wszystko nie zawisło, a sprawdzenie czy odniosła skutek za pomocą stanu procesu w ps. (jak gost to wtedy killall -9 na przykład)

- w przypadku zawieszenia można wywołać restart sekwencją klawiszy z pilota, ja akurat używam 5xPOWER, ale inni użwyją bardziej skompilowanych kodów. ;)

- automagiczny restart według mnie nie jest dobry. Przykład. W momencie, kiedy tuner uruchamia komendę wget blbla żeby pobrac stan, ty uruchamissz IPTVPayer-a. Ten przy uruchamianiu miliona niepotrzebnych hostów dość długo miele i wyświetla spinner. Spinner oznacza, że e2 czeka, a więc nie zwróci stanu a to skutkuje niespodziewanym i nieprawidłowym restartem.

Odnośnik do komentarza
Udostępnij na innych stronach

Po pierwsze na 99% zawisło OpenPLi a nie System bo termnal CI działał.

Zapewne wystarczyło wydać:

/etc/init.d/openpli restart

O tym pisał już @j00zek

Ja dodam jeszcze, iż nie pamiętam kiedy moje boxy się ostatni raz wieszały. Tego zjawiska nie znam już od miesięcy. Nie znam w sensie tak mocnym abym musiał pisać jakiegoś watchdoga. Jeżeli box Ci się często wiesza to raczej poszukałbym przyczyny niż leczył objawy.

Odnośnik do komentarza
Udostępnij na innych stronach

Gość mackowiakp

W moim przypadku, nie mam żadnych pluginów poza WebIf bo są mi kompletnie do niczego niepotrzebne. Takie ekstrasy załatwiam poprzez funcje SmartTV i/lub przez Adndroid TV stick. No oczywiście sam webif już powoduje pojawienie się spinnera ale proszę zauważyć że sposób wywołania komendy wget:

 

wget -q -T 15 http://127.0.0.1/web/powerstate

 

w opcjach wget ma "-T 15" co oznacza że czeka na wynik 15 sek. Może czekać np 30 sek. Nie ma problemu.

A ja mam w domu żonę. Jak jej tłumaczę że ma przeładować/zresetować nboxa to mi mówi że znajomi mają nboxa oryginalnego, bez moich idiotycznych przeróbek i nic im się nie zawiesza. Rozwód wisi w powietrzu, więc wolę napisać tego watchdoga. Sprzęt musi być house-wife-proof.

Stąd liczę na pomoc kolegów  :D

 


 

Po pierwsze na 99% zawisło OpenPLi a nie System bo termnal CI działał.

Zapewne wystarczyło wydać:

/etc/init.d/openpli restart

O tym pisał już @j00zek

Ja dodam jeszcze, iż nie pamiętam kiedy moje boxy się ostatni raz wieszały. Tego zjawiska nie znam już od miesięcy. Nie znam w sensie tak mocnym abym musiał pisać jakiegoś watchdoga. Jeżeli box Ci się często wiesza to raczej poszukałbym przyczyny niż leczył objawy.

 

No właśnie. Ale zjawisko to występuje przy intensywnym korzystaniu ze streamingu po http. Ja akurat dużo to wykorzystuje i wiele razy, transmisja się zrywa bo LTE nagle straciło zasięg (normalka) i streamowanie zostaje przerwane. No a na nboxie takie połączenia "wiszą" bo nie zostały poprawnie rozłączone. Niestety nie ma innego sposobu na zrzucenie takich połączeń, poza restartem stosu IP. Lub całego boxa. Stąd raczej wolę jebootnąć całe pudło.

Odnośnik do komentarza
Udostępnij na innych stronach

No to od końca: Jeżeli uważasz, że taki skrypt Ci potrzebny to idea, którą opisałeś wydaje się słuszna. Czas jest do ustalenia, ale to najłatwiej chyba metodą prób i błędów. Tzn. j00zek napisał jakie jest niebezpieczeństwo używania podanej komendy i jeżeli będzie Ci się restartowało zbyt często, to znaczy, że masz za krótki czas.

 

Co do wieszania: Takie zawieszenie enigmy, czy też openpli, które opisałeś nie jest dla mnie niczym zaskakującym ... ale też dawno nie pamiętam, żebym miał. Najczęstsze przyczyny: timeshift i wszelakie inne próby jednoczesnego odtwarzania i nagrywania. Ale po ostatnich poprawkach kernela coraz trudniej zwiesić ten proces. [Dotyczy to głównie ESI-88, ale z ciekawości sprawdziłem: nawet  5800SX z 211 po uzupełnieniu /dev/dvb/adapter0 o 4 pliki wytrzymał ekstremalne warunki.] Natomiast jak już mi się udawało enigmę doprowadzić do stanu zawieszenia, to nie chciała reagować ani na kill ani na kill -9, szło reboot, czasami -f.

 

Czyli w skrócie: Jeżeli żona tylko ogląda i nie korzysta z takich udogodnień jak timeshift i lista nagrań a Ty w tym czasie boksa nie męczysz, to żadnych zwisów nie powinno być. Jak korzysta ... no to może taki watchdog się przyda. Jeżeli jak napisałeś męczysz boksa używając streamingu, to w sumie możesz się zalogować i reboot wpisać jak się zwiesi ;)

 

Gdyby zainteresowało Cię to:

 

- w przypadku zawieszenia można wywołać restart sekwencją klawiszy z pilota, ja akurat używam 5xPOWER, ale inni użwyją bardziej skompilowanych kodów. ;)

 

To poczytaj tutaj: http://forum.xunil.pl/index.php/topic,1128

Odnośnik do komentarza
Udostępnij na innych stronach

no nie wiem, czy żona będzie zadowolona, jak jej się tuner zrestartuje samodzielnie. ;)

żona jest najważniejsza, a święty spokój jeszcze bardziej. Więc ja bym Ci proponował:

- zmienić dostawcę internetu,

- kupić nowy tuner tylko do streamingu

- streamować przez computer,

- restartować tuner z rana,

 

 

Odnośnik do komentarza
Udostępnij na innych stronach

Obawiam się, że to co napisał j00zek będzie bezwzględnym minimum.

To co teraz wykonujesz na nBoxie daleko przekracza to co oficjalnie ten tuner wykonuje pracując (teraz już) w NC+

Nie jeden o wiele lepiej wyposażony tuner może mieć problem z wykonaniem tylu zadań  i to w dodatku w niestabilnym środowisku.

 

Odnośnik do komentarza
Udostępnij na innych stronach

Gość mackowiakp

no nie wiem, czy żona będzie zadowolona, jak jej się tuner zrestartuje samodzielnie. ;)

żona jest najważniejsza, a święty spokój jeszcze bardziej. Więc ja bym Ci proponował:

- zmienić dostawcę internetu,

- kupić nowy tuner tylko do streamingu

- streamować przez computer,

- restartować tuner z rana,

 

No właśnie! Mam w cronie restart o 5 rano poprzez komendę /usr/bin/system.sh restart. Ino że się nie zrestartował dziś bo zwisł właśnie na wget (tak jak pisałem wcześniej)

Co do streamowania poprzez komputer to i tak streamuję przez domowy serwer Serviio + BubbleUPnP, zainstalowane na domowym serwerze Linuxowym bo on dokonuje jednocześnie transkodingu do mniejszej rozdzielczości w celu zaoszczędzenia pasma do transmisji. No i poza tym mam na tablecie dostęp z dowolnego miejsca na świecie do wszystkich moich kanałów TV i zasobów Audio/Wideo/Foto na serwerze

Odnośnik do komentarza
Udostępnij na innych stronach

Gość mackowiakp

Wiem to stąd, że dla Serviio strumień z satboxa to tak zwany "Live stream". A ja w ten sam sposób, czyli poprzez zdefiniowanie identycznego w składni adresu, oglądam zdalnie swoje domowe kamery od nadzoru. Czyli "Live stream" dla Serviio z satboxa to dokładnie to samo co "Live stream" z kamery IP. No i po "padnięciu" LTE, nie ma żadnego odpalonego strumienia między kamerą a serwerem Serviio. A w przypadku satboxa - jest.

Odnośnik do komentarza
Udostępnij na innych stronach

No dobrze, ale skoro nbox gada z serviio a ten transkoduje i on gada ze swiatem, to może on trzyma to połączenie z jakiegoś powodu. Co się stanie, jak zrestartujesz serviio? Połączenia znikają?

 

Odnośnik do komentarza
Udostępnij na innych stronach

Gość mackowiakp

No właśnie nie znikają. To znaczy znikają z Serviio ale jakoś "wiszą" na satboxie. Jakieś "zombie" bo to dziwne jakieś. Niby transmisja odpalona z satboxa ale Serviio niczego nie pobiera. Brak konekcji IP do satboxa. Dziwne to... Bo stos IP w satboxie powinien po pewnym czasie sam zrzucać takie połączenia

Odnośnik do komentarza
Udostępnij na innych stronach

Gość mackowiakp

Ostatecznie mój skrypt watchdog wygląda tak:

 

GraterliaOS:/var/bin# cat watchdog.sh

#!/bin/sh

sleep 600

cd /var/bin

while true; do

sleep 60

echo "Dupa" > /var/bin/powerstate

wget -q -T 45 -O /var/bin/powerstate http://127.0.0.1/web/powerstate 2>/dev/null

wyn=`wc -l powerstate 2>/dev/null|awk '{ print $1 }'`

if [ $wyn -ne 5 ]

then

/sbin/reboot

fi

done

 

Nie oczekuję słów podziwu  ;D ale konstruktywna krytyka - jak najbardziej wskazana!

 


 

a jak zdownujesz interfejs w nboxie i podniesiesz, dalej są?

 

Mówiąc szczerze - nie próbowałem resetu samego interface ETH

 

EDIT: Kolejny raz post pod postem....

Odnośnik do komentarza
Udostępnij na innych stronach

Gość mackowiakp

No nie. Bo zauważ że on tak naprawdę startuje dopiero po 15 min od jego uruchomienia (sleep 900). Jeżeli dałbym np co minutę z crona to byłaby duża szansa że ten skrypt zadziałałby jeszcze w trakcie bootowania się E2, czyli jeszcze nie pracowałby WebIf i nastąpiłby jeboot. A właściwi bootloop.

Odnośnik do komentarza
Udostępnij na innych stronach

Gość mackowiakp

No i Drodzy Koledzy zawiesił mi się po nocy nbox. Przyczyną była burza i wyładowania atmosferyczne. Znaczy obraz się zamroził, pikseloza itp. I mieliście rację. Zawiesił się nie box a enigma. Pomogło wklepanie w konsolę:

 

killall enigma2

 

Zresztą w systemach operacyjnych jakim jest np Linux (w odróżnieniu od Windozy) system nie ma prawa się zawiesić ale poszczególnym aplikacjom to się zdarza. Wiem trochę na ten temat bo Unixami zajmuję się od 1982 roku, czyli od czasu kiedy pewnie większości z Was Szanowni Koledzy, jeszcze na Świecie nie było.

 

Sprawa następna - wręcz z gatunku wk.....cych. W poleceniu "wget" NIE DZIAŁA opcja "-T" czyli timeout. Co jest ewidentnym bugiem w wersji zaimplementowanego busyboxa. Tak więc skrypt nad którym żeśmy pracowali - jest do zupy.

 

Teraz moje pytanie. Na jakiej podstawie mogę wywnioskować że enigma wymaga przeładowania? Oscam pracował prawidłowo bo pobierał uprawnienia z karty, no ale obraz zamrożony. No ale oscam to zewnętrzna aplikacja w stosunku do enigmy.

Ma któryś z Kolegów pomysł na to?

Jest to dla mnie istotne bo jak napisałem, dużo korzystam ze streamingu poprzez Internet, często będąc za granicą i taka zwiecha enigmy, choćby spowodowana burzą, uniemożliwiają mi oglądanie czegokowiek. No, gdyby wget pracował poprawnie - nie byłoby problemu. Tak więc liczę na inne pomysły. Nie jest dla mnie rozwiązaniem logowanie się zdalne do nboxa i robienie reboota. Bo uważam - jako inżynier-automatyk starej daty - że po to wymyślono komputery żeby nam ułatwiały życie a nie komplikowały i same mają się "naprawić" jak się "popsują".

Z góry dziękuję za ewentualne podpowiedzi.

Odnośnik do komentarza
Udostępnij na innych stronach

Gość mackowiakp

Cóż, tak jak pisałem, u mnie nastąpiło to po burzy. Co ciekawe, nie pamiętam aby takie zawieszenie się po burzy nastąpiło przy oglądaniu kanałów SD. Ot, w krytycznym przypadku, zaniknie obraz, pikseloza ale po przejściu burzy wszystko wraca do normy. Natomiast przy oglądaniu HD - zamrożenie ekranu z pikselozą - na bank. Zaznaczam. Zwiecha nie boxa ale enigmy. A może właśiwie jakiegoś playera w enigmie.

Odnośnik do komentarza
Udostępnij na innych stronach

...Zresztą w systemach operacyjnych jakim jest np Linux (w odróżnieniu od Windozy) system nie ma prawa się zawiesić ale poszczególnym aplikacjom to się zdarza. Wiem trochę na ten temat bo Unixami zajmuję się od 1982 roku, czyli od czasu kiedy pewnie większości z Was Szanowni Koledzy, jeszcze na Świecie nie było.

 

Widzę, ze Twoje poglądy też są z 1982 roku. :P Jestem w stanie udowodnić Ci, że źle napisany driver pod linux-a wywali go tak samo skutecznie, jak źle napisany driver pod windows. I tyle

w temacie wyższości rozwiązania X nad Y.

 

Co do reszty, zamrożenie obrazu to efekt błędu w komponencie player-a. W zdecydowanej większości sytuacji e2 nawet nie wie, że zamrożenie nastąpiło. Dowiaduje się, jak chcemy zmienić program, wtedy wyskakuje spinner, bo główny wątek jest zajęty i czeka na odpowiedź w skrócie pisząc z playera. Najlepszym rozwiązaniem na wszelkiego rodzaju zamrożenia i błędy w dekodowaniu jest monitorowanie stanu za pomocą dmesg. Widać tam jak na dłoni co się stało i kiedy.

 

Niestety 90% wszelkich dystrybucji na sh4 ma tą możliwość bezsensownie (moje prywatne zdanie) wyłączoną.

 

Pozostaje Ci więc monitorowanie oscam-a i sprawdzanie, czy jest odpytywany. Ale, jeśli rozumiem, to w twoim przypadku był. Wiec ta możliwość odpada.

Odnośnik do komentarza
Udostępnij na innych stronach

Gość mackowiakp

Szubkie pytanie - rozumiem, ze skoro killl to wget zaszialalby. Moze uzyc pelnej wersji wget?

Szybkie pytanie dwa bo nie do konca rozumiem. OpenPLi wisiala a OScam dekodowal?

 

Dokładnie pobierał uprawnienia z karty ale na ekranie zagrożony obraz HD. Tak nie do końca jestem przekonany że wget by pomógł. Szukam jakiegoś innego rozwiązania.

dmesg wydaje się obiecujące. Tylko co konkretnie Kolega miał na myśli?

Odnośnik do komentarza
Udostępnij na innych stronach

Gość mackowiakp

No niestety. W wget pobranym z repo też nie działa opcja -T

 

Jeżeli to interesuje Szanownych Kolegów, to udało mi się rozwiązać problem nie działającej opcji "-T" w wget, zarówno w wersji busybix jak i wziętej z repo tego forum. Wykorzystałem nieco inne zjawisko.

 

Otóż obecnie mój watchdog wygląda tak jak poniżej i jest uruchamiany po starcie systemu, umieszczony jest w katalogu /var/bin i nazywa się watchdog.sh:

 

#!/bin/sh
sleep 900
cd /var/bin
while true; do
#sleep 60
/var/bin/jest&
sleep 60
ttt=`ps -e|grep jest|grep -v grep|wc -l`
if [ $ttt -gt 0 ]
then
date >> /hdd/backup/rebooty
sync
/sbin/reboot
fi
done

 

dodatkowo w katalogu /var/bin jest program o nazwie "jest":

 

#!/bin/sh

rm /var/bin/powerstate

wget -q -O /var/bin/powerstate http://127.0.0.1/web/powerstate 2>/dev/null

 

I działa. Do ustalenia pozostaje wielkość wartości sekund w poleceniu "seep" ale to u mnie ta wartość się sprawdza.

Zaznaczam że wykorzystuję nboxa tylko dla odbioru/nagrywania i streamingu wideo po http. Nie mam zainstalowanych żadnych ekstrasów/pluginów bo wszystko to i szybciej i lepiej zapewnia mi funkcja SmartTV i/lub Android TV stick wetknięty do TV.

 

Scalono

 

Odnośnik do komentarza
Udostępnij na innych stronach

Gość mackowiakp

Problem polega na tym że sieć mi nie zwisa, bo mogę dostać się do satboxa a nawet działa webif od oscama. Tyle że wyraźnie pokazuje że nie pobiera niczego z karty. Próba kanał góra/dól nie pomagał. Zaznaczam też, że zwiecha - ta "prawdziwa" - miała miejsce po burzy. Bo te symulowane przeze mnie oczywiście nie.

Nie próbowałem przeładowywać samego OpenPLi tylko walnąłem od razu reboot

 

No i po 5 dniach pracy, zadziałał mój watchdog, przeładowując pudło. Ponieważ tak naprawdę sprawdzane jest tylko czy WebIf API działa a ja loguję jedynie datę i godzinę przeładowania, moje pytanie jest takie. Jak mogę zrzucić przed przeładowaniem trochę więcej logów, tak aby ewentualnie wywnioskować co było przyczyną zwisu.

Scalono ... nie piszemy posta pod własnym postem edytujemy

Odnośnik do komentarza
Udostępnij na innych stronach

U siebie mam skrypt /usr/bin/startopenpli lekko zmodyfikowany:

 

        #/usr/bin/enigma2 > /dev/null 2> /dev/null
        info_log=`date +"/media/temp/info_%Y%m%d%H%M.log"`
        error_log=`date +"/media/temp/error_%Y%m%d%H%M.log"`
        /usr/bin/enigma2 > $info_log 2> $error_log

 

I we wskazanym miejscu zapisują mi się logi z enigmy. Może tam coś znajdziesz.

 

A poza tym, jak już skrypt zdecyduje, że ma zrobić reboot, to mógłby jeszcze coś do plików zapisać może? Np. netstat -n czy inne top -n 1 albo co Ci jeszcze przyjdzie do głowy.

Odnośnik do komentarza
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...