SH: Sok memóriát foglaló programok leállítása (memcheck.sh)
2009. March 26. - 23:23 | szerző: jonci

Szerver üzemeltetésénél fontos a szerver működőképességének megőrzése. Két dolog van, ami sosem elég, egyik a tárhelykapacitás, a másik pedig a szabad memória. Ez utóbbinak megőrzésére mutatok be egy scriptet, ami hasznos lehet másnak is:

#!/bin/sh

KILL_LEVEL="40"
FILTER=".*"
SUBJECT="Killed process by memcheck"
ALERT_EMAILS="cimzett1@domain.tld cimzett2@domain.tld"

ps -A -o comm,pmem,pid,args | grep "$FILTER" | while read line
do
  date=`date '+%Y-%m-%d %H:%M'`
  if [ $(echo "$line" | awk '{printf int($2)}') -gt $KILL_LEVEL ]
  then
    kill -9 `echo $line | awk '{printf $3}'`
    server=`cat /etc/hostname`
    prog=`echo $line | awk '{$2="";$3="";print " "$0}'`
    body="Killed:n   server:  $servern   date:    $daten   cmd:$progn"
    for i in $ALERT_EMAILS
    do
      echo -e "$body" | mail -a "From: felado@domain.tld" -s "$SUBJECT" "$i"
    done
  fi
done

Ha nem akarjuk automatizálni, csak elindítani parancssorban, akkor érdemes lehet egy while ciklus közé fogni:

root@bash# while true
do

  ...ide jöhet az előző script egy-az-egyben, majd az 5 másodperces pihenő

  sleep 5
done

Persze célravezetőbb, ha beautomatizáljuk a script működését a cron segítésével.

Email This Post Email This Post Print This Post Print This Post
 
1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

Szólj hozzá!