Сценарий timeout – это полезная программа мониторинга ресурсов для ограничения времени и потребления памяти процессов в Linux. Он позволяет запускать программы под контролем, накладывать ограничения на время и память, завершая программу при нарушении этих параметров.
Не требуется установка, просто выполните команду вместе с аргументами, используя программу timeout, и она будет контролировать потребление памяти и времени команды, прерывая процесс при выходе за пределы, и уведомляя вас заранее определенным сообщением.
Для запуска этого сценария вам необходимо установить Perl 5 на вашу систему Linux и смонтировать файловую систему /proc.
Чтобы проверить установленную версию Perl на вашей системе Linux, выполните следующую команду.
$ perl -v

Затем клонируйте репозиторий timeout на вашу систему, используя команду git, затем перейдите в локальный репозиторий, используя команду cd и вызовите его как обычную команду Linux.
$ cd ~/bin $ git clone https://github.com/pshved/timeout.git $ cd timeout
Давайте теперь посмотрим, как работает сценарий timeout.
Основное ограничение памяти (100М виртуальной памяти):
В этом первом примере показано, как ограничить использование памяти процессом до 100М виртуальной памяти, используя флаг -m
. По умолчанию единица измерения памяти – килобайты.
Здесь команда stress-ng запускает 4 стрессора виртуальной памяти (VMS), которые в сумме используют 40% доступной памяти в течение 10 минут. Таким образом, каждый стрессор использует 10% доступной памяти.
$ ./timeout -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m

Учитывая вывод команды timeout выше, рабочие процессы stress-ng были завершены всего через 1,16 секунды. Это связано с тем, что совокупное потребление памяти VMS (438660 килобайт) превышает разрешенное использование виртуальной памяти для stress-ng и его дочерних процессов.
Основное ограничение времени процесса:
Чтобы включить ограничение времени процесса, используйте флаг -t
, как показано.
$ ./timeout -t 4 stress-ng --vm 4 --vm-bytes 40% -t 10m

В приведенном выше примере, когда время stress-ng CPU+SYS превышает определенное значение 4, рабочие процессы убиваются.
Ограничение времени и памяти процесса одновременно
Вы также можете ограничить как память, так и время одновременно следующим образом.
$ ./timeout -t 4 -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m
Timeout также поддерживает некоторые продвинутые опции, такие как --detect-hangups
, которые включают обнаружение разъединений.
$ ./timeout --detect-hangups -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m
Вы можете контролировать лимит памяти RSS (resident set size) с помощью переключателя --memlimit-rss
или -s
.
$ ./timeout -m 100000 -s stress-ng --vm 4 --vm-bytes 40% -t 10m
Кроме того, чтобы получить код завершения или сигнал+128 процесса, используйте опцию --confess
или -c
, как показано.
$ ./timeout -m 100000 -c stress-ng --vm 4 --vm-bytes 40% -t 10m
Для получения дополнительной информации и примеров использования, смотрите репозиторий Github timeout: https://github.com/pshved/timeout.
Вы также можете найти эти статьи полезными:
- Как найти топ-15 процессов по использованию памяти с помощью ‘top’ в пакетном режиме
- CPUTool – Ограничение и управление использованием ЦП любого процесса в Linux
- Как ограничить использование ЦП процессом в Linux с помощью утилиты CPULimit
Скрипт timeout – это простая программа мониторинга ресурсов, которая в основном ограничивает время и потребление памяти процессов в Linux. Вы можете оставить отзыв о скрипте timeout через форму комментариев ниже.
Source:
https://www.tecmint.com/limit-time-and-memory-usage-of-linux-process/