1. Первый скрипт проверяет ёмкость свободной оперативной памяти на лимит (переменная limit), после чего происходит удаление процесса windows с наибольшей памятью ОЗУ.

limit=100000
freeMem=$(cat /proc/meminfo | grep MemFree | grep -Eo ‘[0-9]+’ | tail -n 1)
echo “Start..”
echo “freeMem = $freeMem”
echo “limit = $limit”
echo “freeMem < limit = [$freeMem -lt $limit]”

if [[ $limit -lt $freeMem ]]; then
maxUsed=$(ps -la | sed -e “s/ * / /g” | cut -d” ” -f10 |grep -Eo ‘[0-9]$
procid=$(ps -la | grep $maxUsed | sed -e “s/ * / /g” | cut -d” ” -f4)
procName=$(ps -la | grep $maxUsed | sed -e “s/ * / /g” | cut -d” ” -f14)
kill $procid
echo “Process name $procName with ID=$procid killed..”
fi
echo “Done”


2. В этом скрипте аналогичные действия, которые происходят в первом скрипте, только используется CPU и проверка загруженности по проценту.

top -bn1 | sed -e ‘1,6d’ | sed -e ‘s/^ *//’ | sed -e “s/ * / /g” | sed -n 2p > proc.tmp && cut -d” ” -f9 proc.tmp

cut -d” ” -f12 proc.tmp

limit=60
maxProcUsage=$(top -bn1 | sed -e ‘1,6d’ | sed -e ‘s/^ *//’ | sed -e “s/ * / /g” | sed -n 2p > proc.tmp && cut -d” ” -f9 proc.tmp | sed -e “s/\.[0-9]//g”)
echo “Start..”
cat proc.tmp
echo “maxProcUsage = $maxProcUsage”
echo “limit = $limit”
echo “maxProcUsage < limit = [$maxProcUsage -lt $limit]”

if [[ $limit -lt $maxProcUsage ]]; then
procid=$(cut -d” ” -f1 proc.tmp)
procName=$(cut -d” ” -f12 proc.tmp)
kill $procid
echo “Process name $procName with ID=$procid killed..”
fi
rm proc.tmp
echo “Done”

3. Очищаем содержимое всей папки, если размер больше указанного.

#!/bin/bash
limit=10
totalmem=$(du /home/labs/papka | grep -Eo ‘[0-9]+’ | tail -n 1)
echo “Start..”
echo “totalmem = $totalmem”
echo “limit = $limit”
echo “totalmem > limit = [$totalmem -gt $limit]”
if [[ $totalmem -gt $limit ]]; then
rm -Rf /home/labs/papka/
echo “Papke popa..”
fi
echo “Done”