mbuffer 명령에서 stderr을 파일로 리디렉션하려고 합니다. 작동하지 않습니다. stderr 출력이 여전히 화면에 나타나고 오류.txt가 비어 있습니다. 내 명령은 다음과 같습니다.
$ raspivid -w 1280 -h 720 -o - | mbuffer -m 60M -f -o /tmp/temp_video.h264 2> errors.txt &
[2] 5278
in @ 1006 KiB/s, out @ 1006 KiB/s, 9292 KiB total, buffer 0% full^C
in @ 0.0 KiB/s, out @ 0.0 KiB/s, 9.9 MiB total, buffer 17% full^C
참고로, 리디렉션하려는 stderr 출력은 "@ 1006KB/s...."입니다.
내가 뭘 잘못했나요? 감사해요!
답변1
너는 아무 잘못도 하지 않았어mbuffer
/dev/tty
표준 오류를 읽을 수 없으면 다시 엽니다., 리디렉션을 무효화하세요.
이 -q
옵션을 사용하여 상태 출력을 비활성화할 수 있습니다. 문서에 따르면 다음 을 사용하여 -l
상태를 파일에 기록 할 수 있습니다.
mbuffer -m 60M -f -o /tmp/temp_video.h264 -l errors.txt &
하지만 상태 로그에 오류가 있습니다.항상 표준 오류가 발생합니다, 로그가 아닙니다.
이 문제를 해결하는 방법은 다음과 같습니다.
패키지 소스 코드 다운로드
apt-get source mbuffer
패치 추가(패키지 필요
quilt
)cd mbuffer-20161115 quilt new 13-status-log.patch quilt add mbuffer.c
mbuffer.c
461(Debian 8) 또는 472(Debian 9) 행을 편집하여 다음으로 변경합니다.nw = write(Log,buf,strlen(buf));
패치 저장
quilt refresh
패키지 재구축(이것은 필요
dpkg-dev
하고devscripts
패키지입니다)dch -n "Fix the status log to honour the -l option." dch -r ignored dpkg-buildpackage -us -uc
(
dpkg-buildpackage
종속성 누락에 대해 불평하는 경우 해당 종속성을 설치하고 다시 시도하세요.)업데이트된 패키지 설치
sudo dpkg -i ../mbuffer_*-?.1_*.deb
답변2
저는 mbuffer의 작성자이고 상태 로그에 오류가 없다는 점을 지적하고 싶었습니다. 목표는 항상 로그에 상태 메시지를 기록하는 것을 방지하는 것입니다. 로그가 손상되고 사용자가 명시적으로 요청하지 않는 한 읽을 수 없게 되기 때문입니다.
이는 "-v 4"를 사용하여 자세한 정보를 레벨 4로 증가시켜 수행됩니다.
기본 동작은 혼란을 야기하고 로그에 상태 메시지를 표시하지 않는 -Q 옵션도 있으므로 향후 릴리스에서는 로그에 상태 메시지를 상세 수준 3으로 포함하는 것을 고려하고 있습니다.
인사,
도마