Иногда у людей возникает необходимость запустить скрипт на определенное время. В смысле, чтобы он убился через определенное время. Независимо от того, закончил он свою работу или нет. Глупые люди для решения этой задачи пишут нечто такое.
В линуксах и иже с ними для этого есть полезная утилита, называется timeout.
Входит она в состав пакета coreutils, так что скорее всего, она уже у вас установлена.
Использовать её примерно так:
Можно дополнительно слать сигнал kill (если скрипт не отзывается на сигнал завершения). Самое надежное, как обычно, kill -9 (SIGKILL):
В данном случае, если скрипт не завершится за 10 секунд, то на 11й секунде он будет убит 9-кой. Соответственно, -k — через сколько убивать (1s, 1m, 1h), -k — сигнал, с которым убивать (9 или SIGKILL). А сам формат запуска такой:
timeout [OPTIONS] timeout command
Она в coreutils не так давно появилась, в убунте это примерно во времена 12.04. Соответственно Debian 7.0.
Раньше была отдельным пакетом timeout, притом несовместимом по опциям.