Strona 1 z 2
nadzor nad wlaczonymi procesami/automatycznie wylaczanie
: 17 stycznia 2008, 13:02
autor: sixa
Witam
Nie do konca wiedzialem gdzie wstawic ten temat lecz mam nadzieje ze nikt niebedzie mial mi zazle ze umiescilem go wlasnei tu
A teraz do problemu:
Mam maszyne na ktorej jest uruchomione dosc sporo procesow, niestety co jakis czas jeden z nich sie zawiesza i zurzywa 70-98% procesora (normalnie do20%). To zawieszenei sprawia ze cala reszta procesow nei dziala stabilnie, bez zadnej widocznej wydajnosci
Szuakam skryptu badz programu ktory bedzie monitorowal uruchomiony procesy i jezeli jakis bedzie zurzywal wiecej niz 50% bedzie go kilowal
Dodatkowo moglby tworzyc historie swoich dzialan.
Dziekuje za poswiecony czas. Pozdrawiam
: 17 stycznia 2008, 13:50
autor: jaSS
Nie wiem czy aktomagiczne kilowanie procesów (nie wiadomo jakich) jest dobre.
Można zrobić coś w stylu:
Kod: Zaznacz cały
top b | awk '{if($9 > 50) print $1}' | xargs kill -9
Ale ja bym bał się tego używać

: 17 stycznia 2008, 14:11
autor: Akkon
sixa pisze:Dodatkowo moglby tworzyc historie swoich dzialan.
Jeśli chodzi o monitoring obciążenia systemu, to można wymusić by top zrzucał swoje "obserwacje" do pliku:
Parametr -d odpowiada za odstępu pomiędzy zrzutami. W tym przypadku jest to 5 sekund. Można oczywiście ustawić dowolną wartość lub zrezygnować z niego całkowicie.
: 17 stycznia 2008, 14:25
autor: sixa
Kod: Zaznacz cały
top b | awk '{if($9 > 50) print $1}' | xargs kill -9
rozumiem ze ten kod bedzie "zabijal" wszystkie procesy ktore beda zabierac wiecej niz 50% procesora
Dzieki, mzoe jeszcze jakies inne propozycje
: 17 stycznia 2008, 14:30
autor: jaSS
sixa, to jest przykład, poczytaj o top, awk, xargs i będziesz wiedział co to robi.
Jak nie będziesz czytał ze zrozumieniem tylko wklepywał od razu to pewnego dnia przekleisz
i się będziesz dziwił że nagle masz spokój z wszelkimi procesami i dużo wolnego miejsca na dysku.
: 17 stycznia 2008, 14:59
autor: salmon
jaSS pisze:top b | awk '{if($9 > 50) print $1}' | xargs kill -9
nie działa, xargs nie przekazuje parametru i nie mam pojecia dlaczego nie.
: 17 stycznia 2008, 15:04
autor: jaSS
salmon, a jak zrobisz tylko
to coś Ci wyświetla?
Pewnie trzeba dodać jakiegoś grep -v żeby wyciąć nagłówki z topa aby awk ich nie brał pod uwagę
: 17 stycznia 2008, 15:10
autor: salmon
jaSS pisze:to coś Ci wyświetla?
Pewnie trzeba dodać jakiegoś grep -v żeby wyciąć nagłówki z topa aby awk ich nie brał pod uwagę
Zeby ominąć nagłówki i przypadkowe programy zrobiłem coś takiego:
Kod: Zaznacz cały
pid=`ps -A|grep $1|awk '{print $1}'`
top b | awk -v p=$pid '{if($9 > 50 && p == $1) print $1}'
i skrypt jest wywoływany z nazwą programu jako parametr. Bez xargs wyswietla normalni PID w osobnej linijce, a z xargs zawiesza sie.
: 17 stycznia 2008, 15:21
autor: jaSS
salmon, no ok, ale pid masz przypisywane tyko za pierwszym razem natomiast top b wyświetla co 5 sekund i nie kończy działania, a w tak zwanym międzyczasie mogą być uruchomione programy których pid będzie inny niż te zawarte w $pid
inna sprawa że xargs może czekać na zakończenie i dlatego nie działa
[ Dodano: 2008-01-17, 15:24 ]
rzeczywiście, xarg czeka na zakończenie działania, ale top można uruchomić z jedną iteracja:
Kod: Zaznacz cały
top b n 1 | awk '{if($9 > 1 && $9 < 101) print $1" "$9" "$12}' | xargs echo
a $9 < 101 spowoduje wyświetlenie tylko tych kolumn które są cyframi, czyli oleje kolumny nagłówka
No i oczywiście w takim przypadku trzeba utuchomić to w jakiejś pętli
: 17 stycznia 2008, 15:28
autor: salmon
jaSS pisze:salmon, no ok, ale pid masz przypisywane tyko za pierwszym razem natomiast top b wyświetla co 5 sekund i nie kończy działania, a w tak zwanym międzyczasie mogą być uruchomione programy których pid będzie inny niż te zawarte w $pid
Wiem, wiem

to jest po prostu na szybko połączona moja wersja z Twoją.
jaSS pisze:inna sprawa że xargs może czekać na zakończenie i dlatego nie działa
też tak myśle, pytanie jak to ominąć? Próbowałem ustawić --max-args na 1 ale i tak nie pomogło.