사용자 정의 흐름을 만들 수 있습니까?

사용자 정의 흐름을 만들 수 있습니까?

여기서는 어떤 용어를 사용해야 할지 잘 모르겠습니다. 그러니 양해해 주시기 바랍니다.

나는 생성하는 응용 프로그램을 작성 중입니다.많은통나무. 나는 내 애플리케이션 스트림 로그를 갖고 다른 프로세스가 foo스트림처럼 읽을 수 있도록 허용하는 것이 멋지다고 생각했습니다.foo/dev/random

즉, 로그를 어딘가에서 지속적으로 스트리밍하고(아카이브, 삭제 등과 같은 파일 시스템 문제에 대해 걱정할 필요 없이) 다른 프로세스를 해당 스트림에 "플러그인"할 수 있는 기능을 갖고 싶습니다. 끝없는 문서.

어떻게 해야 하나요? 무엇인가요 foo?

이상적으로는:

terminal 1
> mkthing foo
> while :; do echo 'abcdefg' >> foo; sleep 1; done

terminal 2
> echo foo
(outputs "abcdefg" every second)

답변1

로그를 보는 가장 일반적인 방법은 다음과 같습니다.파일에 쓰세요. 로그를 보고 싶을 때 이 파일을 읽으십시오. 파일에 추가된 행을 관찰하려면 다음 명령을 사용하십시오.tail -f, 파일 끝에 도달한 후 파일을 열어두고 추가 줄이 추가되는지 감시합니다. 이 옵션은 -f"Follow"용이며 다음에 사용됩니다.더 적은F"follow"를 사용하여 동일한 효과를 얻을 수 있습니다. 다른 프로그램에서는 tail이를 수행하기 위한 고전적인 유틸리티이므로 파일 "테일링"이라고 부를 수 있습니다. 바라보다tail이 웹사이트의 태그광미 유틸리티에 대한 추가 정보.

로그를 파일에 기록하고 싶지 않은 경우 다음 위치에서 애플리케이션을 실행할 수 있습니다.화면또는멀티플렉서. /usr/bin/my_application --some-option백그라운드에서 실행 하려면 screen을 사용하세요.

screen -S myapp -d -m /usr/bin/my_application --some-option

로그를 보려면:

screen -S myapp -d -r

로그 보기를 중지하려면 Ctrl+ 분리를 누르세요 . A d로그를 볼 때 바람직할 수도 있고 그렇지 않을 수도 있는 입력을 애플리케이션에 보낼 수도 있습니다. 읽기 전용 액세스 권한을 부여하려면 다음을 참조하세요.읽기 전용 모드에서 "화면"을 실행하는 방법이 있습니까?

tmux를 사용하여 애플리케이션을 시작합니다.

tmux new-session -s myapp -d /usr/bin/my_application --some-option

최신 로그 보기:

tmux attach -r -t myapp

Ctrl+를 눌러 A d분리하세요. 실행 중에는 애플리케이션과 상호 작용할 tmux attach수 없습니다 .-r


명명된 파이프당신이 원하는 것이 아닙니다. 표면적으로 적절해 보이기 때문에 언급하는 것뿐입니다(제가 작성하면 댓글에 표시됩니다). 설명하는 대로 수행됩니다.

mkfifo foo
while :; do echo 'abcdefg' >> foo; sleep 1; done

~와 평행 한

cat foo

판독기가 한 명만 있어야 하므로 이는 원하는 것이 아닙니다. 리더가 없으면 쓰기 측이 차단됩니다. 판독기가 여러 개인 경우 각 행(또는 프로그램이 출력을 생성하는 방식에 따라 블록)은 어느 정도 무작위로 선택된 정확히 한 명의 판독기에 의해 표시됩니다. 판독기가 있고 사라지면 쓰기 측에서는 쓸 수 없게 되며 비활성화되지 않으면 SIGPIPE를 받게 됩니다.

관련 정보