Когда выполняешь команды в терминале, их вывод иногда задерживается из-за буферизации. Это мешает при логировании, мониторинге в реальном времени и пайпах.
stdbuf решает эту проблему, управляя буферизацией стандартного ввода, вывода и ошибок.🚪 Как отключить буферизацию? Запустим ping, но без задержек в выводе:
stdbuf -oL ping 8.8.8.8
-oL - отключает буферизацию вывода (line-buffered mode). Теперь каждая строка появляется сразу.
❌ Для ошибок (stderr):
stdbuf -eL some_command
👀 Использование с пайпами. Некоторые команды задерживают вывод в пайпах. Например, grep в цепочке:
ping 8.8.8.8 | grep "time="
Ничего не показывает? Это из-за буферизации! Исправляем:
ping 8.8.8.8 | stdbuf -oL grep "time="
⚡️ Полезные примеры
1️⃣ Логирование в реальном времени
stdbuf -oL tail -f /var/log/syslog | grep "error"
2️⃣ Скрипт без задержек в выводе
#!/bin/bash
stdbuf -o0 my_script.sh
-o0 полностью отключает буферизацию.
3️⃣ Буферизация при вводе
stdbuf -i0 -o0 -e0 cat
Позволяет мгновенно обрабатывать ввод/вывод.
BashTex 📱 #bash #utils