TGViewer
BashTex | Linux BashTex | Linux @bash_tex · 2.51K subscribers
Post #306 1.12K
Реализация цикла с таймаутом ожидания результата и отменой

Polling с таймаутом в bash - когда нужно подождать результат, но не вечно. Идеально подходит для:

📍 Ожидания ответа от API;
📍 Проверки, появился ли файл;
📍 Проверки, поднялся ли сервис;
📍 Паузы перед перезапуском, если условие не выполнено.

1️⃣ Пример: ждать файл не больше 10 секунд


TIMEOUT=10
INTERVAL=1
FILE="/tmp/ready.flag"

for ((i=0; i<TIMEOUT; i+=INTERVAL)); do
if [[ -f "$FILE" ]]; then
echo "Файл найден"
break
fi
sleep "$INTERVAL"
done

if [[ ! -f "$FILE" ]]; then
echo "Таймаут: файл не появился"
fi


2️⃣ Пример: проверка доступности порта (через nc)


HOST="localhost"
PORT=8080
TIMEOUT=15

for ((i=0; i<TIMEOUT; i++)); do
if nc -z "$HOST" "$PORT"; then
echo "Сервис доступен"
break
fi
sleep 1
done

if ! nc -z "$HOST" "$PORT"; then
echo "Сервис не запустился за $TIMEOUT секунд"
fi


3️⃣ Более обобщенная функция


poll_until() {
local timeout=$1
local interval=$2
shift 2
local elapsed=0

while ((elapsed < timeout)); do
if "$@"; then
return 0
fi
sleep "$interval"
((elapsed+=interval))
done
return 1
}


▪️Использование:


poll_until 10 1 curl -sf http://localhost:8080/health || echo "Недоступен"


Polling pattern с ограничением по времени - инструмент, когда “ожидание результата” должно быть контролируемым.

BashTex 📱 #bash #utils
  • 👍 10
More from @bash_tex
  1. Oct 9, 2026BashTex 📱 #мем
  2. Oct 8, 2026Bridge FDB - как Linux bridge узнаёт, где находится MAC Linux bridge не знает заранее, за…
  3. Oct 7, 2026/dev/tcp - сетевое соединение средствами Bash В Bash есть малоизвестная возможность работа…
  4. Oct 6, 2026Ephemeral ports - почему заканчиваются исходящие TCP-порты Когда приложение устанавливает…
  5. Oct 5, 2026name_to_handle_at() - как получить файловый объект без обычного пути В Linux обычно обраща…
  6. Oct 2, 2026madvise() - как процесс подсказывает ядру, как он собирается использовать память Когда про…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →