TGViewer
DevOps на минималках DevOps на минималках @devopseri · 2.78K subscribers
Post #392 437
Знали, зачем в Bash иногда используют exec вместо обычного запуска команды?

Обычно команду запускают так:
nginx -g 'daemon off;'


Shell остаётся родительским процессом, а nginx запускается как дочерний процесс.

В обычном терминале это почти незаметно. Но в Docker-контейнерах, entrypoint-скриптах и service-wrapper’ах это может стать проблемой: сигналы приходят в shell, а не напрямую в основной процесс.

Например, такой entrypoint выглядит рабочим:
#!/usr/bin/env bash

nginx -g 'daemon off;'


Но если контейнер останавливают через docker stop, сигнал SIGTERM сначала получает shell. Если он не передаст сигнал дочернему процессу корректно, приложение может завершаться не так, как ожидается.

Для основного процесса лучше использовать exec:
#!/usr/bin/env bash

exec nginx -g 'daemon off;'


exec не создаёт новый дочерний процесс, а заменяет текущий shell указанной командой.

То есть nginx становится главным процессом:
PID 1 -> nginx


А не так:
PID 1 -> bash -> nginx


Это особенно важно для контейнеров:
docker stop app


Теперь сигнал остановки приходит напрямую в приложение, и оно может корректно завершить работу: закрыть соединения, сбросить буферы и освободить ресурсы.

exec также полезен в скриптах-обёртках:
#!/usr/bin/env bash

export APP_ENV=prod
exec ./server


После подготовки окружения shell больше не нужен, поэтому его можно заменить настоящим процессом приложения.

➡️ DevOps Ready | #совет
  • 👍 2
  • ❤ 1
More from @devopseri
  1. Sep 21, 2026Из вашего резюме вообще понятно, что вы умеете как DevOps-инженер? Мы разбили работу DevOp…
  2. Sep 21, 2026Настраиваем простой healthcheck для Docker-контейнера! Контейнер может быть запущен, но пр…
  3. Sep 19, 2026Когда ты уже станешь настоящим DevOps? Открываешь вакансию: Linux, Docker, Kubernetes, CI/…
  4. Sep 17, 2026Сколько времени вы тратите на отчеты, которые можно собрать автоматически? Если каждый мес…
  5. Sep 12, 2026Делаем безопасный backup конфига перед изменением! Перед правкой nginx, systemd unit, dock…
  6. Sep 5, 2026Проверяем HTTP endpoint из shell-скрипта! Иногда нужно быстро понять, жив ли сервис: API,…
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 →