выполнить команду с ограничением по времени (таймаутом)

Thank you for reading this post, don't forget to subscribe!

Linux постав­ля­ет­ся с мно­же­ством команд, каж­дая коман­да уни­каль­на и исполь­зу­ет­ся в опре­де­лен­ных случаях

Цель Linux — помочь вам быть мак­си­маль­но быст­рым и эффективным.

Одним из свойств коман­ды Linux явля­ет­ся огра­ни­че­ние по времени.

Вы може­те уста­но­вить огра­ни­че­ние по вре­ме­ни Для любой коман­ды, кото­рую вы хоти­те запустить.

Если вре­мя исте­ка­ет, коман­да пре­кра­ща­ет выполнение.

В этом корот­ком руко­вод­стве вы изу­чи­те два мето­да исполь­зо­ва­ния огра­ни­че­ния вре­ме­ни в ваших командах.

Запустите команды Linux с помощью инструмента timeout

В Linux есть ути­ли­та команд­ной стро­ки, назы­ва­е­мая timeout, кото­рая поз­во­ля­ет вам выпол­нять коман­ду с огра­ни­че­ни­ем по времени.

Его син­так­сис выгля­дит сле­ду­ю­щим образом.

Что­бы исполь­зо­вать коман­ду, вы ука­зы­ва­е­те зна­че­ние вре­ме­ни ожи­да­ния (в секун­дах) для коман­ды, кото­рую хоти­те запу­стить, напри­мер, что­бы выпол­нять коман­ду ping через 5 секунд, вы може­те выпол­нить сле­ду­ю­щую команду.
Вам не нуж­но ука­зы­вать (s) после номе­ра 5.
Дру­гие суффиксы:
  • m минуты
  • h часы
  • d дни
Ино­гда коман­ды могут про­дол­жать выпол­нять­ся даже после того, как тайм-аут отправ­ля­ет началь­ный сиг­нал, в таких слу­ча­ях вы може­те исполь­зо­вать опцию —kill-after.
Вот син­так­сис:

Вам нуж­но ука­зать про­дол­жи­тель­ность, что­бы timeout знал, через сколь­ко вре­ме­ни дол­жен быть отправ­лен сиг­нал kill.

Напри­мер, пока­зан­ная коман­да будет пре­кра­ще­на через 8 секунд.

Запуск команд Linux с помощью программы Timelimit

Про­грам­ма Timelimit запус­ка­ет коман­ду, затем завер­ша­ет про­цесс по исте­че­нии задан­но­го вре­ме­ни, исполь­зуя задан­ный сиг­нал, сна­ча­ла пере­да­ет пре­ду­пре­жда­ю­щий сиг­нал, а затем по исте­че­нии вре­ме­ни ожи­да­ния отправ­ля­ет сиг­нал kill.

В отли­чие от опции timeout, Timelimit име­ет боль­ше опций, таких как killsig, warnsig, killtime и warntime.

Timelimit мож­но най­ти в репо­зи­то­ри­ях систем на осно­ве Debian, и для его уста­нов­ки исполь­зуй­те сле­ду­ю­щую команду.

Для систем на осно­ве Arch вы може­те уста­но­вить его с помо­щью вспо­мо­га­тель­ных про­грамм AUR, напри­мер, Pacaur Pacman и Packer.

В дру­гих дис­три­бу­ти­вах Linux вы може­те ска­чать исход­ный код и уста­но­вить его вручную.

После уста­нов­ки выпол­ни­те сле­ду­ю­щую коман­ду и ука­жи­те время.

В этом при­ме­ре 10 секунд.
Обра­ти­те вни­ма­ние, что если вы не ука­зы­ва­е­те аргу­мен­ты, Timelimit исполь­зу­ет зна­че­ния по умол­ча­нию: warntime = 3600 секунд, warnsig = 15, killtime = 120 и killsig = 9.