Linux команды · 2 min read · Feb 02, 2026

Команда timeout в Linux: объяснение для начинающих (с примерами)

Иногда, когда вы выполняете команду в Linux, вы можете захотеть запустить её на установленное количество времени. Существует утилита командной строки - timeout - которая специально разработана для этой цели. В этой статье мы обсудим основы этой команды, используя несколько простых примеров.

Но прежде чем мы это сделаем, стоит упомянуть, что все примеры в этом руководстве были протестированы на машине с Ubuntu 18.04 LTS.

Команда timeout в Linux

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

timeout [OPTION] DURATION COMMAND [ARG]...

А вот как страница man инструмента объясняет это:

timeout - запустить команду с ограничением по времени  
Запустить COMMAND и завершить её, если она всё ещё работает после DURATION

Следующие примеры в формате вопросов и ответов должны дать вам лучшее представление о том, как работает этот инструмент.

Вопрос 1. Как использовать команду timeout?

Основное использование довольно просто - просто выполните ‘timeout’, указав в вводе значение таймаута (в секундах), а также команду, которую вы хотите запустить.

Например, если вы хотите завершить команду ping через 5 секунд, вот как вы можете использовать timeout в этом случае.

timeout 5 ping google.com

Вопрос 2. Как получить статус выхода команды в выводе?

По умолчанию, если команда timeout выполнена успешно, она возвращает 124 как статус выхода. Вот пример:

В первом случае я позволил команде timeout выполниться успешно, и, как вы можете видеть, статус выхода был 124. Однако во втором запуске я принудительно завершил команду, используя Ctrl+C, и в этом случае статус выхода был 0.

Но если вы хотите, чтобы timeout возвращал статус входной команды, даже если timeout выполняется успешно, вам нужно будет использовать параметр командной строки –preserve-status.

Например:

timeout --preserve-status 5 ping google.com

Вопрос 3. Как изменить сигнал, который отправляет timeout?

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

Тем не менее, если вы хотите, вы можете изменить сигнал, который отправляет timeout. Для этого вам нужно будет использовать параметр командной строки -s и указать в вводе сигнал, который вы хотите, чтобы timeout отправил.

Например:

timeout -s SIGKILL [COMMAND]

Чтобы получить список доступных сигналов, которые вы можете отправить, выполните следующую команду:

kill -l

Вопрос 4. Как заставить timeout автоматически отправлять сигнал KILL?

Иногда вы можете столкнуться с входной командой, которая продолжает выполняться даже после того, как timeout отправляет первоначальный сигнал. Для таких случаев timeout предлагает опцию ‘–kill-after’.

Вот как это объясняет страница man:

-k, --kill-after=DURATION  
              также отправить сигнал KILL, если COMMAND всё ещё работает  
              так долго после того, как был отправлен первоначальный сигнал

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

Заключение

В зависимости от того, какой работой вы занимаетесь, команда timeout может оказаться довольно полезным инструментом. Здесь, в этом руководстве, мы обсудили большинство опций, которые предлагает эта утилита. Как только вы закончите практиковаться с ними, вы можете узнать больше о timeout, обратившись к его странице man.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.