morg Napisano Marzec 9, 2009 Zgłoszenie Share Napisano Marzec 9, 2009 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 More sharing options...
andrew Napisano Marzec 9, 2009 Zgłoszenie Share Napisano Marzec 9, 2009 Witam! Może przez awk ? $ipcs -ma | awk '$6 == "0" {print $2}' Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
morg Napisano Marzec 9, 2009 Autor Zgłoszenie Share Napisano Marzec 9, 2009 Ś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 More sharing options...
@WalDo Napisano Marzec 9, 2009 Zgłoszenie Share Napisano Marzec 9, 2009 W tym przypadku może pomóc odpowiednio skonfigurowane → polecenie sudo BTW Zamiast: ipcs -ma | awk '$9 == "0" {print $2}' >plik ipcrm -m `sed -n 1p plik` Można ipcrm `ipcs -ma | awk '$9 == "0" {print $2}'` Zwróć uwagę na odwrotne apostrofy. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
morg Napisano Marzec 9, 2009 Autor Zgłoszenie Share Napisano Marzec 9, 2009 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 More sharing options...
Rekomendowane odpowiedzi
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ę