리눅스에서 파일을 스트리밍하는 방법

리눅스에서 파일을 스트리밍하는 방법

여러 사용자가 사용할 수 있는 터미널 출력이 있습니다.

현재 다음과 같습니다:

command > /var/logs

입력에 대해 다음을 수행합니다.

watch tail -30 /var/logs

입력 단자용.

그러나 이는 업데이트가 있을 때 출력하는 대신 폴링만 관찰하고 꼬리가 스크롤백을 허용하지 않기 때문에 바람직하지 않습니다.

답변1

당신이 주장하는 두 가지 문제는 다음과 같습니다.

업데이트가 있을 때 출력하는 대신 여론 조사만 시청하세요.

tail -f여론조사를 하지 않습니다. GNU Coreutils 버전 7.5부터는 tail -fLinux 커널의 inotify인터페이스를 사용하여 커널로부터 파일이 수정되었음을 나타내는 신호를 수신합니다. GNU Coreutils를 사용하지 않거나 어떤 이유로 7.5 이전 버전을 사용하는 경우 초당 한 번씩 폴링합니다. Linux가 아닌 POSIX 운영 체제(BSD, Solaris 등)에서도 폴링할 수도 있지만 사례별로 조사해야 합니다. 이러한 OS 중 일부는 GNU Coreutils를 사용하지만 커널은 inotify; 그들 중 일부는 구현에 GNU Coreutils를 tail전혀 사용하지 않습니다 .

꼬리는 스크롤백을 허용하지 않습니다

이 명령은 (예: 명령의) 데이터를 버퍼링하고 앞뒤로 스크롤할 수 있도록 less특별히 설계되었습니다 . 버퍼는 무제한이 아니지만 명령줄 옵션을 사용하여 버퍼를 늘리거나 줄일 수 있을 뿐만 아니라 버퍼가 뒤로 스크롤 및 앞으로 스크롤되는 기간을 수정할 수도 있습니다.stdintail

그래서 아마도,

tail -f /var/logs | less

폴링 없이 로그의 스크롤백 버퍼를 유지할 수 있습니다( tail커널이 파일이 수정되었음을 알리는 신호를 보낼 때까지 CPU를 소비하지 않고 유휴 상태로 유지됩니다).

여러 사용자가 동일한 버퍼에서 읽을 수 있어야 하는 경우 세션 tail -f /var/logs내에서 실행할 수 있습니다 screen. 내 원래 답변은 여러 사용자가 동시에 동일한 로그 데이터를 볼 수 있도록 이것을 실행하려는 것을 고려하지 않았습니다. @Let_Me_Be를 언급 screen한 후 그것이 아마도 최선의 방법일 것이라는 생각이 들었습니다.

따라서 내 솔루션과 @Let_Me_Be의 솔루션을 함께 사용하면 됩니다.

screen -mdS logview -- tail -f /var/logs

경고: 테스트되지 않았습니다. 틀렸다면 수정해주세요. 하지만 내 생각에 우리는 적절한 해결책을 향한 길에 가까워졌다고 생각합니다.

screen이제 다중 사용자 모드 만 있으면 됩니다 . 조금 복잡해서 설명하겠습니다.이것사이트는 그 자체로 말합니다. 요점은 파일 multiuser on에 추가해야 한다는 것입니다 ~/.screenrc. 또한일반적인 문제해당 링크 하단에 있습니다.

이제 사용자가 로그를 보려면 다음을 수행하세요.

screen -rS logview

해야합니다.

답변2

screen또는 와 같은 프로그램을 원합니다 tmux.

관련 정보