Насколько я знаю, это невозможно. И я думаю, что это гораздо более сложная проблема, чем кажется на первый взгляд, если учесть сложность управления памятью. Может быть, даже сложно четко записать, что значит "отложить в сторону 50 Мб".
Но в Linux есть кое-что, что вполне может решить Вашу проблему гораздо более элегантно:
.
Убийца OOM - убийца из памяти - который принимает решение о том, какой процесс убить, если память становится плотной, и просто убивает ее.
Гораздо лучше, чем ждать первой программы, которая не проверяет возвращаемое значение malloc()
и перестает работать.
Есть некоторые параметры для настройки ее под свои нужды - см. Как настроить Linux Out-of-Memory Killer.
Частично все усложняет то, что не помогает зарезервировать память для одной программы: чтобы сделать что-то полезное, нужно уметь запускать другие программы - например, kill
.
Это можно легко сделать с awk
:
awk 'NR==FNR { a[$1] = $2; next; } { if ($1 in a) { print $1, a[$1]; } }' firstFile.txt secondFile.txt
Это будет печатать сопоставленные значения и второй столбец из первого файла.
Или вы можете попробовать это:
#!/bin/bash
while IFS=' ' read -r -a arr; do
while read j; do
if [ "${arr[0]}" = "$j" ]; then
echo "${arr[0]} ${arr[1]}"
fi
done < secondFile.txt
done < firstFile.txt
, который предполагает первые и второе столбцы в FirstFile.txt разделены пространством, и что SecondFile.txt имеет один столбец.