![파이프된 명령의 I/O 버퍼링을 방지하는 방법](https://linux55.com/image/139891/%ED%8C%8C%EC%9D%B4%ED%94%84%EB%90%9C%20%EB%AA%85%EB%A0%B9%EC%9D%98%20I%2FO%20%EB%B2%84%ED%8D%BC%EB%A7%81%EC%9D%84%20%EB%B0%A9%EC%A7%80%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
다음 명령 체인은
날짜 스탬프를 사용한 핑(UNIX),
UNIX 날짜 스탬프를 사람이 더 읽기 쉬운 형식으로 변환합니다.
터미널 및 로그 파일로 출력됩니다.
ping -D localhost 2>&1 | sed 's/^\[\([0-9]*\.[0-9]*\)\]\(.*$\)/echo "[`date -d @\1 +"%Y-%m-%d %H:%M:%S"`] \2"/e' | tee -a ping.log
문제는 작성된 대로 출력이 ping의 일반적인 2초 단위, 한 줄 단위 출력과 달리 거의 1분 또는 약 50줄 단위로 버퍼링되는 것처럼 보인다는 것입니다.
버퍼링의 원인과 이를 방지하는 방법은 무엇입니까?
답변1
시스템에서 사용 가능한 경우 다음을 사용하십시오.버퍼링 해제. 간단해야 합니다.
unbuffer ping -D localhost 2>&1 | unbuffer sed 's/^\[\([0-9]*\.[0-9]*\)\]\(.*$\)/echo "[`date -d @\1 +"%Y-%m-%d %H:%M:%S"`] \2"/e' | tee -a ping.log