tee не только для логов: запись сразу в несколько потоковБольшинство используют
tee только для сохранения вывода команды в файл:command | tee output.log
Но возможности tee этим не ограничиваются. Он позволяет разветвлять поток данных и отправлять его сразу в несколько мест.▪️Запись в несколько файлов
Например, сохранить один и тот же вывод сразу в два файла:
dmesg | tee kernel.log backup.log >/dev/null
Не нужно запускать команду дважды - tee сам продублирует поток.▪️Логирование без потери вывода
Если скрипт должен писать лог, но при этом вывод оставаться в терминале:
./backup.sh | tee backup.log
Пользователь видит процесс выполнения, а лог сохраняется автоматически.▪️Добавление вместо перезаписи
По умолчанию
tee перезаписывает файл.Чтобы дописывать:
echo "Started" | tee -a app.log
Ключ -a работает так же, как >>.▪️Передача сразу в несколько команд
Вместе с process substitution можно построить разветвление потока:
journalctl -f \
| tee >(grep ERROR > errors.log) \
>(wc -l > count.txt) \
> /dev/null
Теперь один поток одновременно:фильтруется по ошибкам;
подсчитывается;
может использоваться в других обработчиках.
Команда
journalctl при этом запускается только один раз.▪️Почему это важно
tee - это не просто инструмент для записи логов. Он позволяет строить конвейеры, где один источник данных обслуживает сразу несколько получателей. Это особенно полезно при анализе логов, мониторинге и автоматизации, когда дорого или невозможно повторно запускать исходную команду.BashTex 📱 #bash #linux