리눅스
stdbuf 명령어
변군이글루
2025. 11. 25. 13:13
반응형
stdbuf 명령어
stdbuf는 GNU coreutils 패키지에 포함된 명령어로 프로그램의 표준 입력(stdin), 표준 출력(stdout), 표준 에러(stderr) 에 대한 버퍼링 정책을 즉시 변경할 때 사용됩니다.
설치
Debian(Ubuntu) 계열
sudo apt update
sudo apt install coreutils
RHEL(CentOS) 계열
sudo yum install coreutils
기본 사용법
stdbuf [옵션] 명령어
주요 옵션
- -i MODE : 표준 입력 버퍼링 설정
- -o MODE : 표준 출력 버퍼링 설정
- -e MODE : 표준 에러 버퍼링 설정
버퍼링 모드
- L : 라인 버퍼링 (줄바꿈마다 flush)
- 0 : 버퍼링 없음 (즉시 flush)
- full : 완전 버퍼링 (기본값)
- 1MB, 4K : 특정 크기로 버퍼링 지정
사용 예제
1. 실시간 로그 확인
일반적인 tail | grep 조합은 버퍼링 때문에 grep이 바로 출력하지 않는 경우가 있습니다.
stdbuf -o0 tail -f /var/log/syslog | stdbuf -o0 grep "error"
- tail -f → 로그 계속 읽기
- stdbuf -o0 → 출력 버퍼 제거하여 실시간으로 grep 결과 표시
stdbuf -o0 python script.py | stdbuf -o0 grep "pattern"
2. 라인 단위 버퍼링
한 줄씩 출력 (대화형 프로그램에 유용)
stdbuf -oL python interactive_script.py
입력도 라인 버퍼링
stdbuf -iL -oL my_program
3. 특정 버퍼 크기 지정
4KB 버퍼 사용
stdbuf -o4K data_processor
1MB 버퍼 사용
stdbuf -o1M large_file_processor
4. 모든 스트림 버퍼링 설정
입력: 라인 버퍼링, 출력: 버퍼링 없음, 에러: 라인 버퍼링
stdbuf -iL -o0 -eL my_application
로그 처리
실시간 로그 필터링
stdbuf -o0 tail -f application.log | stdbuf -o0 awk '/ERROR/ {print $0}'
데이터 처리 파이프라인
전체 파이프라인에 버퍼링 제어 적용
stdbuf -o0 generator | stdbuf -i0 -o0 processor | stdbuf -i0 -oL saver
unbuffer 명령어(expect 패키지)
Debian(Ubuntu) 계열
sudo apt install expect
사용법
unbuffer python3 app.py | grep "INFO"
참고URL
- Ubuntu Packages : coreutils 패키지
- Ubuntu Manuals : stdbuf 명령어
python3 app.py 버퍼링 해제 | "INFO"를 잡아
728x90
반응형