Intereting Posts
Как использовать интегрированную Intel и выделенную графику nVidia для питания разных мониторов? AWK | Динамическое преобразование строк в столбцы Правильный способ найти этот пакет (shellshock patch)? Файлы труб, загруженные с помощью wget в функцию Без потерь конвертация MPEG ADTS MP3 в обычный MP3 Не удалось загрузить модуль ядра 'nvidia.ko' Что на самом деле делают `\ time`,` t \ ime` и `\ cd`? (весело с обратной косой чертой в раковинах) Повторно распечатать массив в определенном формате? Debian Stable libgl1-nvidia-glx: i386 не найден (пытается установить Steam) не может подключиться к dnsmasq на локальной машине, порт открыт, но соединение отказано Выполнение задач параллельно с использованием Bash Как создать отдельный раздел usr во время установки арки? Не удается удалить файл из samba share + Solaris + ZFS Вырезать некоторые поля из текстового файла в другой Управление заданиями: как сохранить вывод фонового задания в переменной

OOM – убивает процесс от пользователя с наибольшим потреблением памяти?

У меня многопользовательская система, где активные пользователи должны получать справедливую долю доступной памяти.

Могу ли я настроить Linux, чтобы убить процесс пользователя с наибольшим общим потреблением памяти?

Это произойдет, когда система потеряет память. Я полагаю, что самый большой из процессов этого пользователя должен быть убит.

Я не хочу устанавливать ограничения на количество пользователей для пользователей, поскольку их число варьируется и потому, что будет потеряна память, если большинство пользователей не работают. Убийство самого большого процесса будет работать, но оно должно быть для каждого пользователя. В противном случае один пользователь может вызвать множество небольших процессов и привести к тому, что средний процесс другого пользователя будет убит.

Ниже будет уничтожен процесс, используя большую часть памяти на коробке. Это то, что вы искали, или это должен быть процесс пользователя, который использует большую часть памяти (что может быть не самым большим нарушителем и причиной нехватки памяти)?

#!/bin/bash free=`awk '/^Mem/ {print $3}' <(free -m)` psout=`ps axo pid,args,pmem,rss,vsz --sort -pmem,-rss,-vsz | head -2` pid=`echo $psout | cut -d " " -f 6` if (( $free < 1 )); then kill -9 $pid fi; 

Изменить: теперь я вижу ваши рассуждения, попытаюсь изменить приведенный выше код.

Изменить 2: Поскольку мне не нужно сегодня выполнять этот проект, позвольте мне поставить вас на правильный путь. Вы можете скачать smem (скрипт python) из приведенного ниже URL-адреса: https://www.selenic.com/smem/download/

Запуск от root с ключом -u даст вам общий объем памяти, используемый каждым пользователем. Возьмите это в массиве, отсортируйте по используемому mem, а затем просто добавьте -u в команду ps, чтобы убить худшего нарушителя этого пользователя.