Я переустановил Mint 18.1, и проблема исчезла. Использование памяти остается
Насколько я понимаю, что произошло, если это может помочь кому-то еще, это была утечка памяти в ядре. Сомневаюсь, что течет само ядро, но причиной может быть драйвер.
Я нашел интересный документ об утечке памяти ядра: https://01.org/linuxgraphics/gfx-docs/drm/dev-tools/kmemleak.html. Я не уверен, какие версии ядра могут включить это, но стандартное ядро 4.10 в Ubuntu не делает этого (необходимо перекомпилировать ядро с включенной опцией).
Следуя этой идее, я наконец нашел причину. Несколько недель назад я установил загрузочную диаграмму. Не отображается как системное приложение. Я переустановил его, и результат довольно прост. Использование памяти продолжает медленно расти, пока количество запущенных процессов.
Та же проблема описана здесь: https://forums.linuxmint.com/viewtopic.php?t=226774
Почему мин=1000
и макс=10000
? Существует 65536 возможных двухоктетных значений, есть ли какая-то причина использовать только часть из них?
В оболочках с $RANDOM
(по крайней мере, Bash/ksh93/zsh) вы делаете это полностью в оболочке:
printf "00:0c:29:51:%02x:%02x\n" $(( $RANDOM % 256 )) $(( $RANDOM % 256 ))
Или, если вы хотите сохранить сгенерированные адреса в файле, и повторяйте попытку, пока не получите новый, что-то вроде этого:
file=./generated_macs
gen() {
printf "00:0c:29:51:%02x:%02x\n" $(( $RANDOM % 256 )) $(( $RANDOM % 256));
}
while mac=$(gen); grep -q "$mac" "$file" ; do true ; done
echo "$mac" >> "$file"
Вы можете использовать /dev/urandom для его создания:
end=$( for i in $(seq 1 2); do character=$( tr -dc "0-9A-E" < /dev/urandom | head -c 2); printf ":%s" $character; done); echo "00:0c:29:51"$end