Skocz do zawartości

Automatyczne Kilowanie Procesów Ipc.


morg

Rekomendowane odpowiedzi

Cześć

 

W jaki sposób za pomocą skryptu kilnąć nieużywane (ZOMBIE) procesy IPC.

 

Wygląda to tak:

[morg@morg Opery]$ ipcs -ma

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status
0x00000000 32768      root      644        40         2
0x00000000 65537      root      644        16384      2
0x00000000 98306      root      644        268        2
0x00000000 163843     morg      600        393216     2          dest
0x00000000 196612     morg      600        393216     2          dest
0x00000000 229381     morg      600        393216     0          dest
0x00000000 262150     morg      600        393216     0          dest
0x00000000 294919     morg      600        393216     0          dest
0x00000000 327688     morg      600        393216     0          dest
0x00000000 360457     morg      600        393216     0          dest

 

W systemie powstają mi procesy które po zakończeniu działania są nieaktywne ale swoje biorą. Te wszystkie w kolumnie NATTCH z liczbą zero należy skilować. A że mam je często i w dużej ilości chciałem to zautomatyzować.

 

Polecenie które te procesy kończy to:

 

ipcrm -ma [shmid]

 

O ile problem z numerem kolumny można rozwiązać i nawet było na forum o tyle porównanie do wartości 0 z kolumny nattch i z takim warunkiem wykonanie polecenia ipcrm na numerze shmid sprawia mi spory kłopot.

 

Myślałem o tym w ten sposób:

 

ipcs -ma >plik
cut  -f2 plik | cut -d'' -f1

 

Ale nie potrafię wyodrębnić kolumny shmid porownać linię do zerowej wartości kolumny nattch a później jeszcze zwolnić pamięć.

 

Wiecie może jak to osiągnąć?

 

 

Odnośnik do komentarza
Udostępnij na innych stronach

Świetnie!

 

Dziekuję.

 

M.

 

Ps. A jak zrobić żeby się zalogował na root i samodzielnie skasował te procesy?

 

petla ()
{
su

ipcs -ma | awk '$9 == "0" {print $2}' >plik
ipcrm -m `sed -n 1p plik`
}
petla

 

Taka pętla nie działa.

M.

 

Odnośnik do komentarza
Udostępnij na innych stronach

Zapomniałem napisać, że sudo nie jest zainstalowane i raczej nie będzie :)

 

 

A ten sposób:

 

ipcrm `ipcs -ma | awk '$9 == "0" {print $2}'`

 

jest bardzo elegancki, i w zupełności mi wystarczy.

 

 

Dziekuję wszystkim za pomoc.

 

M.

 

 

EDIT:

 

Jednak okazuje się że powyższy sposób nie zawsze działa.

 

Rozwiązanie:

 

ProcesyDoUsun=`ipcs -ma | awk '$9 == "0" {print $2}'`
    for Proces in $ProcesyDoUsun
      do
    ipcrm -m $Proces
done

 

 

M.

 

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...