2016-12-23 3 views
0

제목이 명확하지 않으면 죄송합니다.파일의 발생 횟수를 나타냅니다. 조건부 패턴 매칭

나는 15 분마다 읽을 파일을 가지고 있으며 그 안에 특정 패턴 (예 : 시간 초과)을 찾습니다. 파일에 고정 된 업데이트 빈도가 없습니다.

예상 결과 : - 1. 패턴이 15 분 내에 3 번 발견되면 command1을 실행하십시오. 2. 패턴이 15 분 안에 5 번 발견되면 command2를 실행하십시오.

각 검사마다 마지막으로 읽은 위치에서 읽을 파일입니다. 이 작업을 수행하는

감사합니다, GRV

+4

지금까지 시도한 내용은 무엇입니까? 가장 중요한 구현은 매번 패턴의 총 발생 횟수를 읽고 해당 횟수를 파일에 저장하는 것입니다. 15 분 간격으로, 이전에 저장된 것과 현재의 횟수를 비교합니다. – codeforester

+0

코드를 표시하십시오 –

답변

0

한 가지 방법은 cron 작업에 있습니다. 그것은 다른 솔루션보다 복잡하지만 매우 안정적입니다 ("체크 스크립트"가 충돌하더라도 기간이 끝난 후 cron까지 다시 호출됩니다). cron가 될 수 다음 env DISPLAY=:0이 경우에 필요하지 않을 수도 있습니다

*/15 * * * * env DISPLAY=:0 /folder/checkscript >/dev/null 2>&1 

, 또는 그것은 스크립트 (에 따라 필요할 수 있습니다 참고 : 당신은 찾을 에코 $DISPLAY을 실행 사건이 적응해야 할 수도 있습니다 케이스에 변수를 넣으십시오). 그것은 귀하의 질문에 포함되지 않습니다

#!/bin/bash 
if [ -f /tmp/checkVarCount ]; then oldCheckVar="$(cat /tmp/checkVarCount)"; else oldCheckVar="0"; fi 
checkVar="$(grep -o "pattern" /folder/file | wc -l)" 
echo "$checkVar" > /tmp/checkVarCount 
checkVar="$(($checkVar-$oldCheckVar))" 
if [ "$checkVar" -eq 3 ]; then command1; fi 
if [ "$checkVar" -eq 5 ]; then command2; fi 
exit 

,하지만 당신은뿐만 아니라 패턴이 4 번, 7 번 발견되면 명령을 실행하는 데 의미가 있다면, 당신은을 변경할 수 있습니다 :

귀하의 "checkscript"가 될 수있다 위의 관련 부분 :

if [ "$checkVar" -ge 3 ] && [ "$checkVar" -lt 5 ]; then command1; fi 
if [ "$checkVar" -ge 5 ]; then command2; fi 
+0

cron 작업으로 디스플레이를 설정하는 것이 중요한 이유는 무엇입니까? – diametralpitch

+0

일부 프로그램은'cron '에서 호출 할 때이 환경 변수가 없으면 실행할 수 없습니다. –