TGViewer
BashTex | Linux BashTex | Linux @bash_tex · 2.51K subscribers
Post #282 1.35K
Асинхронное логирование bash-скриптов с метками времени

Когда скрипт выполняет много команд, хочется: видеть вывод в реальном времени, сохранить лог в файл, добавить метки времени и не тормозить скрипт тяжелым tee в цикле.

Вот асинхронный способ, как это сделать.

▪️ Подход: через mkfifo и фоновый логгер


#!/bin/bash

LOG_FILE="script.log"
PIPE="/tmp/pipe.$$"

# создаем именованный канал
mkfifo "$PIPE"

# логгер: читает из канала, добавляет таймштамп и пишет в файл
tee "$LOG_FILE" < "$PIPE" |
while IFS= read -r line; do
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $line"
done &

# перенаправим stdout и stderr скрипта в канал
exec > "$PIPE" 2>&1

# ———————————————
echo "Скрипт стартовал"
sleep 1
echo "Работаем..."
ls /nonexistent/path
echo "Завершено"
# ———————————————

wait
rm "$PIPE"


🌟 Что получаем:

📍 Вывод в терминале с метками времени
📍 Лог сохраняется в файл без stdout-мусора
📍 Работает асинхронно: скрипт не ждёт tee/while
📍 Поддерживает stderr


Файл script.log будет без меток времени - идеально для машинной обработки
На экране - человекочитаемый лог

BashTex 📱 #bash #utils
  • 🔥 12
More from @bash_tex
  1. Oct 12, 2026xargs против while read: где быстрее и безопаснее Обе конструкции позволяют обработать спи…
  2. Oct 9, 2026BashTex 📱 #мем
  3. Oct 8, 2026Bridge FDB - как Linux bridge узнаёт, где находится MAC Linux bridge не знает заранее, за…
  4. Oct 7, 2026/dev/tcp - сетевое соединение средствами Bash В Bash есть малоизвестная возможность работа…
  5. Oct 6, 2026Ephemeral ports - почему заканчиваются исходящие TCP-порты Когда приложение устанавливает…
  6. Oct 5, 2026name_to_handle_at() - как получить файловый объект без обычного пути В Linux обычно обраща…
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 →