Linux Labs

Bash: обработка текста и скрипты / Ступень 7 из 9

Код завершения и healthcheck

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 4 из 8 · на машине · 6 мин

Ответ с ошибкой — тоже ответ

Приложение подняли, но перевели на обслуживание: на каждый запрос оно отвечает maintenance с HTTP-статусом 503. Проверь, каким кодом curl завершается на такой ответ.

Упражнение · посмотреть

Спроси приложение на обслуживании

В ~/health-lab спроси приложение через curl дважды — без ключа -f и с ним — и посмотри код curl после каждого запроса.

Сначала предположи

Приложение отвечает статусом 503. Какой код curl напечатает первая команда, без -f?

Теперь начни упражнение, выполни команду и сверь прогноз с выводом.

Войти и начать Машина доступна после входа

Код curl говорит об обмене: подключился, отправил запрос, получил ответ — успех, какой бы статус ни стоял в ответе. Статус 503 — часть ответа, и без ключей curl его не оценивает.

Ключ -f (--fail) делает сбоем ответ со статусом 400 и выше: curl не печатает тело и завершается кодом 22.

Бывает, что сервер принял соединение и молчит. curl ждёт ответа, и проверка висит вместе с ним. Ключ --max-time 2 ограничивает весь запрос двумя секундами: по истечении тайм-аута curl завершается с кодом 28. Любую другую команду так же ограничивает timeout: timeout 5 команда прерывает её через пять секунд с кодом 124.

Проверь себя 1 вопрос

Healthcheck должен считать сбоем и ответ 503, и сервер, который принял соединение и молчит. Какой запрос ему подойдёт?

  • timeout оборвёт молчащий сервер кодом 124, но ответ 503 без -f для curl — успех с кодом 0.

  • -f поймает 503, но молчащего сервера curl будет ждать: ограничения времени здесь нет.

  • На ответ 503 этот curl завершится кодом 0, а молчащего сервера будет ждать без конца.

-f делает сбоем ответ со статусом 400 и выше (код 22), а --max-time 2 обрывает молчащий сервер через две секунды (код 28). Вместе они дают ненулевой код в обоих случаях.

Ubuntu 24.04
Загрузка…