tail -f를 사용하여 grep -q &&를 사용하는 다른 방법이 있습니까?

tail -f를 사용하여 grep -q &&를 사용하는 다른 방법이 있습니까?

나는 이 해결책을 찾았습니다: https://stackoverflow.com/questions/7178888/grep-q-not-exiting-with-tail-f

하지만 다른 가능성도 있나요?

UPD: 하고 싶지만 tail -f | grep -q something && echo 'found!'tail -f가 파이프가 닫히는 것을 방지하여 echo명령이 실행될 기회가 없기 때문에 작동하지 않습니다.

답변1

그렇게 하는 데 따른 책임은 본인에게 있습니다.

tail -n 0 -f /tmp/bar | { grep -q -m1 zoo && echo found ; pkill -P $$ '^tail$' ; }

pkill일치 항목이 마지막 줄에 있는 경우 이 명령이 필요합니다. 그러나 tail동일한 상위 프로세스가 있는 경우 백그라운드에서 다른 프로세스를 종료할 수 있습니다.

답변2

나는 당신이 grep's -q또는 -m옵션을 사용하고 싶어한다고 믿습니다. 실제로 일치하는 줄을 보려면 를 사용하세요 -m1. 그러면 해당 줄이 인쇄되고 종료됩니다( a 를 보내면 SIGPIPE종료 tail됩니다). 해당 줄을 보고 싶지 않으면 를 사용하면 -q첫 번째 항목을 찾을 때 종료됩니다.

관련 정보