tee
콘텐츠를 stdout
파일 에서 파일로 별도로 파이프 하고 싶습니다 stderr
(실제로 파일에 추가 > >(tee -a $filename)
). 하지만 파일에 첨부된 내용을 보는 대신에진짜파이프라인 콘텐츠를 기반으로 하는 진행률 표시기입니다. 지금까지 각 채널의 출력에 포함된 줄 수 또는 문자 수 등입니다.
참고: 강조해야 하는 이유진짜이상? 나는 백그라운드에서 서브쉘을 통해 회전 배턴을 얻은 다음 PID를 저장하여 죽이는 방법을 알고 있기 때문입니다. 그것은 감동적인 내용이지만 실제로 무슨 일이 일어나고 있는지에 대한 어떠한 징후도 제공하지 않습니다. 즉, 그것은 뱀 기름입니다.
참고: 출력 파일은 애초에 존재하지 않을 수 있으므로 서브셸이 있는 솔루션은 이를 고려해야 합니다.
답변1
my-program > >(pv -trabcN stdout > stdout) 2> >(pv -trabcN stderr > stderr)
다음과 같은 진행 상황을 제공합니다.
stderr: 123MiB 0:00:03 [42.6MiB/s] [41.1MiB/s]
stdout: 138MiB 0:00:03 [54.2MiB/s] [46.2MiB/s]
(현재( -r
) 및 평균( -a
) 속도는 비교적 새로운 것이므로 -a
사용 중인 버전에 없으면 무시해도 됩니다.)pv
답변2
tail 명령에 -f(영원히) 옵션이 유용할 수 있습니다.
파일의 각 줄에 점을 표시합니다.
tail -f bk2ud.log | awk '{printf(".");}'
그러나 필요에 따라 더 복잡한 것을 원할 수도 있습니다.