Скрипт тайм-аута – это полезная программа для мониторинга ресурсов, предназначенная для ограничения потребления времени и памяти процессами в Linux.
Он позволяет вам запускать программы под контролем и применять ограничения по времени и памяти, прерывая работу программы при нарушении этих параметров.
Никакой установки не требуется, просто выполните команду вместе с ее аргументами, используя программу timeout, и он будет отслеживать потребление памяти и время выполнения команды, прерывая процесс, если он выходит за пределы, и уведомляет вас с помощью предварительно определенного сообщения.
Для запуска этого скрипта у вас должен быть установлен Perl 5 в вашей системе Linux и смонтирована файловая система /proc.
Чтобы проверить установленную версию Perl в вашей системе Linux, выполните следующую команду.
Затем клонируйте репозиторий 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
Ограничение времени и памяти процесса
Вы также можете одновременно ограничить память и время следующим образом.
$ ./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