Иногда я использую некоторые программы, которые используют слишком много ОЗУ, и из-за того, что ОЗУ полностью заполнено, моя система дает сбой.
Есть ли какая-нибудь команда, заставляющая Ubuntu автоматически останавливать выполнение определенного процесса после использования определенного количества ОЗУ?
Вы можете использовать bash 'while loop' для достижения этой цели. Вот простой сценарий, который я подключил, который завершится, если вам не хватит памяти:
#!/usr/bin/env bash
set -x
set -e
state=$(sed -E 's/^[[:space:]]*([[:digit:]]*).*/\1/' <<< $(egrep --color 'MemFree' /proc/meminfo | cut -d" " -f2-))
check="2000000"
while [ "$state" -gt "$check" ]
do
echo "Lots of memory"
done
echo "Out of memory"
exit 1
Сценарий получает свою информацию из файла / proc / meminfo и проверяет наличие свободной памяти. Но, конечно, измените ваши потребности.
Информация:
set -x
: используется для отладки скрипта. set -e
: останов скрипта при первой ошибке. state = $ (sed -E 's / ^ [[: space:]] * ([[: digit:]] *). * / \ 1 /' <<< $ (egrep - color 'MemFree' / proc / meminfo | cut -d "" -f2 -))
: получить свободную память из файла / proc / meminfo и отформатировать ее для использования.