Как ограничить память и время процессов в Linux

Системным администраторам часто требуется ограничить память и время процессов в Linux, чтобы избежать ненужного потребления ресурсов. Вы можете легко сделать это с помощью скрипта timeout, который не требует установки и может быть запущен непосредственно из терминала. Он позволяет запускать программы с ограничениями по времени и памяти, а программы, нарушающие эти ограничения, автоматически завершаются. Кроме того, вы можете запустить скрипт таймаута таким образом, чтобы он прерывал только нарушающий процесс и отправлял вам заранее определенное уведомление.

Как ограничить память и время процессов в Linux

Для этой цели мы будем использовать perl-скрипт под названием timeout. Он присутствует в виде репозитория на GitHub. Нет необходимости устанавливать его. Вы можете напрямую скачать и запустить его. Вам просто нужно иметь perl 5, установленный в вашей системе, чтобы иметь возможность ограничивать память и время процессов в Linux. Вы можете проверить версию perl с помощью следующей команды.

Скрипт timeout присутствует в виде репозитория на GitHub. Вы можете напрямую клонировать репозиторий timeout, используя следующие команды.

Базовое ограничение памяти

После загрузки скрипта и перехода в его каталог, вы можете использовать его для ограничения памяти, используя опцию -m и указывая память в килобайтах. Вот пример ограничения виртуальной памяти утилиты stress-ng до 100 Мб.

Если процесс stress-ng займет больше памяти, то он будет автоматически завершен.

Базовое ограничение времени

Вы также можете использовать скрипт timeout для ограничения времени процесса, используя опцию -t, за которой следует число секунд. Вот пример ограничения времени процесса stress-ng до 4 секунд.

В приведенном выше примере мы запускаем команду stress-ng в течение 10 секунд, но накладываем на нее временное ограничение в 4 секунды. Поэтому она завершится через 4 секунды.

Ограничение времени и памяти процесса

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

Вы также можете настроить сценарий таймаута на автоматическое обнаружение зависаний с помощью опции -detect-hangups.

Вы также можете контролировать размер резидентного набора с помощью переключателя -memlimit-rss или -s.

Также, если вы хотите, чтобы команда timeout возвращала код завершения вашего процесса или команды, используйте опцию -c.

Заключение

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

Понравилась статья? Поделиться с друзьями:
Добавить комментарий