Strona 1 z 1

Skrypt od zawieszonych procesów

: 20 lipca 2009, 11:38
autor: timmy666
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ę

: 20 lipca 2009, 15:22
autor: szpuni
Zeby zabic proces zombie trzeba zabic proces macierzysty co sie wiaze z restartem serwera(w tym wypadku serwer gry)

Mozesz tez poprobowac uzyc:

Kod: Zaznacz cały

ps -lax|grep Z
Pozniej przeszukac procesy z

Kod: Zaznacz cały

<defunct>
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?

: 20 lipca 2009, 15:59
autor: timmy666
W tym problem, że jak serwer zawiesi się to nie jest procesem zombie.

W top mam 0 zombie więc to:

Kod: Zaznacz cały

ps -lax|grep Z
nie pomoże i nie pomaga, a raczej nie znajduje tego procesu ale dziękuję, może na przyszłość się przyda.

: 25 lipca 2009, 22:22
autor: Hardiel
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.

: 27 lipca 2009, 12:17
autor: timmy666
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.
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ć:

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
Może ktoś poprawi.