장치 연결을 위해 btmon을 폴링하는 bash 스크립트를 작성하려고합니다. 작동하는 솔루션을 가지고 있지만 터무니없이 느리며 일치하는 항목을 찾은 후 grep이 종료되는 데 매우 느린 것 같습니다 (약 25 초). 속도를 grep
높이거나 완전히 사용 하지 않으려면 어떻게해야 합니까?
#!/bin/bash
COUNTER=0
while :
do
until btmon | grep -m 1 '@ Device Connected'
do :
done
let COUNTER=COUNTER+1
echo on 0 | cec-client RPI -s -d 1
sleep 5
echo as | cec-client RPI -s -d 1
until btmon | grep -m 1 '@ Device Disconnected'
do :
done
let COUNTER=COUNTER-1
if [ $COUNTER -eq 0 ];
then echo standby 0 | cec-client RPI -s -d 1;
fi
done
편집 : 명확하게 설명 btmon
하고 Bluez 제품군의 일부인 블루투스 모니터링 도구이며 cec-client는 HDMI-CEC 직렬 버스를 통해 명령을 실행하기 위해 libCEC와 함께 패키지 된 유틸리티입니다.
btmon은 초당 약 250자를 출력합니다.
—
Rob
@ l0b0 unbuffer 명령으로 버퍼링을 비활성화하려고 시도했지만 grep이 전혀 종료되지 않는 것 같습니다. 또한 grep을 --line-buffer 모드로 설정하려고 시도했지만 도움이되지 않는 것 같습니다.
—
Rob
btmon
버퍼링 자체 를 구현할 수 있습니다 .이 경우 운이 좋지 않습니다.
btmon
출력됩니까? 버퍼링의 문제가 아니라고 확신하십니까?