Witam.
Czy ktoś ma może lub może podpowiedzieć z czym pokombinować jak napisać skrypt,który zeskanuje procesy i zabije, te które się zawiesiły. Potrzebuje czegoś takiego do serwerów gier czasami zdarzy się, że serwer się zawiesi i proces wciąż jest odpalony bo działa w screenie i wykazuje w TOP około 105% CPU. Na tej zasadzie np mógłby on działać że wybierałby takie procesy z TOP, które mają ponad 100% użycia procesora i je ubijał. Bardzo prosiłbym o Pomoc.
Z góry dziękuję
Skrypt od zawieszonych procesów
Zeby zabic proces zombie trzeba zabic proces macierzysty co sie wiaze z restartem serwera(w tym wypadku serwer gry)
Mozesz tez poprobowac uzyc:
Pozniej przeszukac procesy z
I probowac je zabijac.
Skrypt do Crona i powinno cos pomoc.
Chociaz naprawde pownienes sprawdzic ten serwer gry i tam zaimplementowac funkcje zo zabijania Zombie.
W jakim jezyku napisany jest ten serwer?
Mozesz tez poprobowac uzyc:
Kod: Zaznacz cały
ps -lax|grep Z
Kod: Zaznacz cały
<defunct>
Skrypt do Crona i powinno cos pomoc.
Chociaz naprawde pownienes sprawdzic ten serwer gry i tam zaimplementowac funkcje zo zabijania Zombie.
W jakim jezyku napisany jest ten serwer?
W tym problem, że jak serwer zawiesi się to nie jest procesem zombie.
W top mam 0 zombie więc to:
nie pomoże i nie pomaga, a raczej nie znajduje tego procesu ale dziękuję, może na przyszłość się przyda.
W top mam 0 zombie więc to:
Kod: Zaznacz cały
ps -lax|grep Z
No i właśnie jest chyba problem, że wiesz jak go napisać. Ja mam taki skrypt sklecony ale coś nie do końca chce działać:Hardiel pisze:Skrypt, który będzie to nadzorował sam w sobie będzie zużywał trochę CPU bo będzie ciągle wywołany po to żeby być wyczulonym na takim proces. Jeszcze zależy jak często będzie pobierał listę programu top i ją analizował. Samo wykonanie skryptu raczej nie powinno być problemem.
Kod: Zaznacz cały
#!/bin/bash
dead="cs" # <- tu wstaw status martwego programu (z polecenia ps axu)
for ((]; then
{
if [ $dead == $result ]; then
{
echo "Program sie zwiesil, likwiduje proces";
echo "Likwiduje porces o id $pid";
kill -9 $pid
sleep 2;
}
else
echo "Program prawdopodobnie dziala";
fi;
}
else
{
echo "Brak procesu";
}
fi;
sleep 1;
};
done