Век живи, век учись, а дураком помрёшь.
Открыл для себя чудную утилиту timeout
из состава coreutils
.
Делает ровно то, что описывает её название: запускает команду, переданную как аргумент, на заданное время в секундах (s), минутах (m), часах (h) или днях (d):
timeout 10s ping ya.ru
sudo timeout 10s tcpdump -i wlan0 -Q in -A udp
Обратите внимание: если команда должна быть выполнена под sudo
, то sudo
должно стоять перед timeout
.
По истечении таймаута передаётся сигнал TERM
в дочерний процесс. Если нужен другой, то укажите его через аргумент -s SIGNAL
. Утилита дополнительно может послать сигнал KILL
, если команда не отреагировала на сигнал TERM
по истечении таймаута, указанного через параметр -k TIMEOUT
. Прочие вкусности смотреть через --help
, хотя их там, по большей части, и нет.