꼬리 -F 신호음을 만드는 방법이 있습니까?


23

새 데이터가 들어올 때 (파일에 새 줄이 추가됨) 신호음 을 tail -F내거나 less울리는 방법이 있습니까 (터미널에서 벨 울림). 또는 Linux 또는 Mac 에서이 작업을 수행하는 다른 유닉스 유틸리티가 있습니까?

답변:


13

아이디어 출력은 tail스루 출력을 파이프 sed하고 개행을 종 / 개행으로 대체하는 것입니다.

그러나 x-windowtail 내에서 사용하면 더 쉬운 해결책이 있습니다 . 창 내용이 변경 될 때 (깜박임, 벨 등) 작업을 실행할 수 있습니다.


4
줄 바꿈을 바꾸지 말고 줄 끝에 추가하십시오.
케빈

@ Nils,이 sed아이디어는 훌륭하지만 제대로 작동하기에 충분한 'sed'를 모르겠습니다. 정상적인 방식으로 정규 표현식에서 줄 바꿈을 캡처 할 수없는 것처럼 보입니다 (sed to use) 들어오는 스트림을 한 줄씩 해석하지 마십시오.
알리

5
@Ali 실제로, sed는 줄 단위로 작동하며 개행을 직접 보지 않습니다. 각 줄의 끝에 (ksh / bash / zsh 구문의 종 문자)를 sed -e $'s/$/\a/'추가합니다 $'\a'.
Gilles 'SO- 악한 중지

감사합니다 @ Gils, 매력처럼 작동했습니다 (Mac에서도)! sedregexpt는 순진한 눈에는 조금 이상합니다.
알리

1
@Gilles : $'...'구문은 보편적이지 않습니다. 예를 들어 [t] csh는이를 지원하지 않습니다.
키스 톰슨

13

GNU를 사용하는 경우 screen, 꼬리를 사용하여 창을 "감시"하도록 설정할 수 있으며 상태 표시 줄 또는 termcap의 정의 된 종에서 해당 창에 새로운 출력이 있음을 경고합니다.

http://www.gnu.org/software/screen/manual/html%5Fnode/Monitor.html#Monitor


편집 : mac os x를 언급 했으므로 이것을 추가해야했습니다.

재미를 위해, 특히 무언가를 찾고 있다면 Mac OS X의 say명령을 사용하여보고있는 파일을 읽을 수 있습니다. 다음에서 logtail명령을 얻으십시오 .

http://www.hmug.org/pub/MacOS_X/BSD/Administration/Log/logcheck/

그리고 다음과 같은 스크립트에서 사용하십시오.

#!/bin/bash

file=$1
offset=$(basename "$1")

# while true... let this thing run until it's killed...
while true; do
    output=$(/usr/local/bin/logtail $file .${offset}.offset)
    if [ ! -z "$output" ]; then

        # print the output and say ding
        echo "$output" && say ding
        # to have the file read aloud to you, uncomment the following:
        say "$output"

        fi
    # recheck every 5 seconds
    sleep 5
done

감사합니다 @Tim,, screen쇼 및 경고 ( 종종 벨을 울릴 수 있다고 생각합니다) 한 번만. 발생하는 모든 새로운 행사가 아님 (사용 가능한 모든 새로운 라인이 아님)
Ali

1
파일을 읽을 수있는 mac 용 예제를 추가했습니다. Linux 버전의 logtail을 설치하고 beep대신 명령을 사용하여 Linux에서 작동하도록 변경할 수 있습니다 say.
팀 케네디

시원한! 내 경우에는 화면을 보지 않고 로그 파일을 모니터링 할 수 있도록 경고음을 사용하고 있지만 독창적입니다. 그리고 실제 경고음은 음성보다 낫습니다.
알리

1
화면의 exec명령을 사용 하여 수행 할 수도 있습니다 . 맨 페이지의 예는 !:sed -n s/.*Error.*/\007/p해당 창에 "오류"가 표시 될 때마다 종을 보내는 것입니다.
Arcege

Tmux에도 동일하게 적용됩니다.
0xC0000022L

10

multitail을 사용할 수 있습니다 . 정규식 일치에서 명령 실행을 지원 하는 향상된 테일입니다.

예를 들어 다음 명령은 화성인 소스 패킷이 기록 될 때마다 소리를 재생하고 xmessage 창을 엽니 다 .

multitail -ex "martian source" "play beep.wav; xmessage " -i /var/log/messages

4

@Nils가 제안한 것처럼 레코드 를 위해 각 줄 sed에 a bell를 추가하는 데 사용 하고 있습니다 .

sed@Gilles 의해 제공된 광고

sed -e $'s/$/\a/' 

내 Mac에서 작동합니다 (터미널 \ 환경 설정 \ 고급에서 "가청 벨"및 "시각적 벨"을 활성화했습니다).


$'...'이스케이프 시퀀스는 Bash 전용 이라는 점에 유의하십시오 .
amphetamachine

@ amphetamachine 덕분에, 나는 bash 사용자 자신이지만 다른 쉘에서도 작동하는 버전을 추가 할 수 있다면 좋을 것입니다.
알리

나는 또한 bash 사용자이지만 다른 쉘에서 무엇이 작동하고 작동하지 않을지 천천히 배우고 있습니다.
amphetamachine

1

이 페이지를 찾는 다른 사람을 위해 tcsh를 사용하고 있으며 이것이 작동하는 것 같습니다.

tail -f changingfile | sed -e 's/.*/& \a/'

sed 구문이 무엇을 의미하는지 묻지 마십시오 ...


1
나는 나 자신을 도울 수 없다. 나는 sed 표현을 설명 할 수 있는가?
Ashwani Agarwal

0

konsole주어진 탭에서 새로운 활동에 대한 경고 (또는 침묵)를 시도 할 수 있습니다.


나는 상상 konsole같은 것 screen한번 경고 나는 모든 새로운 라인에 대한 경고를받을 필요 동안.
알리
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.