![tail -f를 사용하여 grep -q &&를 사용하는 다른 방법이 있습니까?](https://linux55.com/image/23099/tail%20-f%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20grep%20-q%20%26amp%3B%26amp%3B%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94%20%EB%8B%A4%EB%A5%B8%20%EB%B0%A9%EB%B2%95%EC%9D%B4%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
나는 이 해결책을 찾았습니다: 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
첫 번째 항목을 찾을 때 종료됩니다.