Фоновый запуск команды с логированием и автоархивацией логов

Практические лайфхаки для разработчиков, DevOps и админов: Docker, Linux, Bash, Python, Golang, Ansible, логи и безопасность — только рабочие решения. Даем готовые команды, конфиги и приёмы диагностики, которые экономят часы и дни. Если нужно быстро настроить, отладить и обезопасить инфраструктуру — вы по адресу.

bashлогированиеrun_bg

👁 Часто в скриптах или при ручном запуске сервисов нужно выполнить команду в фоне, видеть её вывод в терминале и сохранять результат в файл. А ещё неплохо бы сохранять старые логи и не затирать их при повторном запуске.

📝 Вот улучшенный Bash-хак:

run_bg() {
  cmd_name=$(basename "$1")
  timestamp=$(date +%Y%m%d_%H%M%S)
  logfile="${cmd_name}_${timestamp}.log"
  mkdir -p logs

  { "$@" 2>&1 | tee "logs/$logfile"; } &
  pid=$!

  echo "[$(date)] Started '$*' in background (PID $pid)"
  echo "Logging to logs/$logfile"
}

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

run_bg python3 my_server.py --debug
run_bg go run app.go

📌 Что делает:

  • Извлекает имя команды и добавляет к лог-файлу timestamp
  • Создаёт папку logs/, если её нет
  • Запускает команду в фоне (&)
  • Вывод команды (stdout + stderr) дублируется в терминал и в лог через tee
  • PID процесса показывается в терминале для отслеживания или остановки

❗️ Такой трюк особенно полезен в dev-окружениях, для запуска фоновых задач, сервисов и тестов. Всё логируется, не затирается, удобно отслеживать и анализировать. Работает в Linux и macOS, нужен только Bash и tee.

tags: #bash #разработка #логирование

❤️ @recura_tech

Скриншот: фрагмент Bash-кода функции run_bg на тёмном фоне, демонстрируется создание logs и вывод команды в терминал.
Пример реализации функции run_bg в Bash: логирование через tee и создание файлов в папке logs.

Читайте так же