суббота, 3 ноября 2012 г.

Перезапуск приложения, если оно выжрало определенное количество памяти.

(с) Ivan Agarkov via fido7.ru.linux

#!/bin/sh
for FD in $(grep "$1" /proc/[0-9]*/comm); do
    PID="$(echo "$FD"|cut -d/ -f3)"
    MEM="$(cat /proc/$PID/statm|awk '{print $1}')"
    if [ "$MEM" -gt "$2" ]; then
        echo "$MEM > $2"
        # тут что-нибудь сделать
    fi
done

Первый аргумент - имя команды. Второй - кол-во памяти в байтах.
Hапример ./script.sh binkd 10240