Pokud je nějáký process, co žere moc paměti, je možné použít tento bash skript, který si kontroluje, kolik proces daného jména aktuálně používá a pokud to jde přes limit, tak ho zabije.

./kill_mem.sh jmeno_proces velikost_pameti
#!/bin/bash
if [ -z "$1" ] || [ -z "$2" ]; then
        echo "usage: $0 filter mem"
        exit 1
fi

while read PID MEM; do
        echo "[$(date '+%Y-%m-%d %H:%M:%S')] Process $PID takes $MEM KB"
        if [ "$MEM" -gt $2 ]; then
                kill $PID
                echo "[$(date '+%Y-%m-%d %H:%M:%S')] Killed $PID"
                echo "Process $PID took $MEM KB, exceeded memory limit $2 KB." | mail -s "[$(hostname)]: Killed $1, PID $PID at $(date '+%Y-%m-%d %H:%M:%S')" dev@skrz.cz
        fi
done < <(ps aux | grep $1 | grep -v grep | grep -v $0 | awk '{print $2 " " $5}')

  • it/linux/bash/memory_restart.txt
  • Poslední úprava: 2016/03/14 09:53
  • autor: kourim