파이프된 명령의 I/O 버퍼링을 방지하는 방법

파이프된 명령의 I/O 버퍼링을 방지하는 방법

다음 명령 체인은

  1. 날짜 스탬프를 사용한 핑(UNIX),

  2. UNIX 날짜 스탬프를 사람이 더 읽기 쉬운 형식으로 변환합니다.

  3. 터미널 및 로그 파일로 출력됩니다.

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

관련 정보