Возможным решением также является встроенный в Bash compgen
. Эта команда возвращает все возможные совпадения для шаблона подстановки и имеет код выхода, указывающий, совпадают ли какие-либо файлы.
compgen -G "/*.text" > /dev/null && ./script
Я нашел этот вопрос, когда искал более быстрые решения.
Я бы исправил это, вернувшись и заново разбив разделы, чтобы получить немного виртуальной памяти, но, черт возьми ..
Вам не обязательно иметь полный раздел, предназначенный для подкачки, и вам не нужно повторно разбивать его.
Создать файл подкачки довольно просто. Просто создайте большой пустой файл, запустите для него mkswap, затем добавьте подкачку.
# create an big empty 1GB file (or whatever size you like)
dd if=/dev/zero of=/swapfile bs=1M count=1024
# format the file as swap
mkswap /swapfile
# turn it on.
swapon /swapfile
Если вы хотите сделать его постоянным, добавьте его в свой fstab
/swapfile swap swap defaults 0 0
Когда я делаю большие компиляции (qtwebkit, я смотрю на вас), я использую контрольную группу, чтобы предотвратить подкачку до смерти или других нежелательных побочных эффектов. Для своего блока 6G я делаю следующее:
cgcreate -g memory:emerge
echo "4G" > /sys/fs/cgroup/memory/emerge/memory.limit_in_bytes
echo "4G" > /sys/fs/cgroup/memory/emerge/memory.memsw.limit_in_bytes
cgexec -g memory:emerge tmux
Если возникает условие OOM, единственный процесс, который будет убит, - это компиляция.
Вы также можете пометить определенные процессы, которые с большей или меньшей вероятностью будут уничтожены в ситуациях с нехваткой памяти. Установив значение oom_score_adj
для определенных процессов, вы можете управлять приоритетом их уничтожения.
По умолчанию все процессы имеют оценку 0, и оценка варьируется от -1000 (никогда не убивать )до 1000 (всегда убивать первым ).
Так как Firefox обычно является самым большим виновником использования памяти на моей машине, вместо этого я запускаю его с помощью скрипта:
#!/bin/sh
echo 900 > /proc/self/oom_score_adj
exec /usr/bin/firefox
Это приводит к тому, что Firefox запускается с оценкой OOM 900, что, как единственный процесс с такой высокой оценкой, означает, что он будет немедленно остановлен, как только в системе закончится память.
Я также делаю то же самое, чтобы установить для среды рабочего стола значение -900, чтобы снизить вероятность ее уничтожения, потому что значения по умолчанию означали, что в половине случаев Firefox будет использовать память, а среда рабочего стола будет быть убитым, чтобы освободить память, которая затем вырубила Firefox и все остальные программы вместе с ним! Не хорошо.