Debian.pro

Блог для пользователей и администраторов Debian


Полезные утилиты: timeout

Иногда у людей возникает необходимость запустить скрипт на определенное время. В смысле, чтобы он убился через определенное время. Независимо от того, закончил он свою работу или нет. Глупые люди для решения этой задачи пишут нечто такое.
В линуксах и иже с ними для этого есть полезная утилита, называется timeout.
Входит она в состав пакета coreutils, так что скорее всего, она уже у вас установлена.

Использовать её примерно так:

root@server:~# timeout 10s somescript.sh

Можно дополнительно слать сигнал kill (если скрипт не отзывается на сигнал завершения). Самое надежное, как обычно, kill -9 (SIGKILL):

root@server:~# timeout -k 11s -s 9 10s somescript.sh

В данном случае, если скрипт не завершится за 10 секунд, то на 11й секунде он будет убит 9-кой. Соответственно, -k — через сколько убивать (1s, 1m, 1h), -k — сигнал, с которым убивать (9 или SIGKILL). А сам формат запуска такой:
timeout [OPTIONS] timeout command


Комментарии (1):

  1. Civil :

    Она в coreutils не так давно появилась, в убунте это примерно во времена 12.04. Соответственно Debian 7.0.
    Раньше была отдельным пакетом timeout, притом несовместимом по опциям.

Написать комментарий