2016-10-25 2 views
0

2 개의 로그 파일이 업데이트되지 않으면 쉘 스크립트로 경고를 보내려고합니다. 현재 크기를 얻으려고합니다 ... 10 초 동안 기다렸다가 파일 크기가 변경되지 않으면 전자 메일 경고를 보냅니다. 어떤 도움이 될거야!쉘 스크립트 - 로그 파일이 업데이트되지 않습니다.

내 코드 :

#! /bin/bash 
logFiles="lg.log lg2.log" 
logLocation="/user/file/logs" 
sleepTime=10 
subject="issue - file not updated" 

failMessage="::no recent updates " 
successMessage="OK" 
not_updated_time=0 
arr=($logFiles) 
arrlen=${#arr[@]} 
arrcount=() 
date 
for ((count=0; count<arrlen; count++)) ; do 
    arrcount[$count]=`ls -l $logLocation${arr[$count]} |awk '{print $5}'` 
    echo "${arr[$count]} Original size :: ${arrcount[$count]}" 
done 
echo 
while [ "e" == "e" ] ; do 
    sleep $sleepTime 
    date 
    for ((count=0; count<arrlen; count++)) ; do 
     nc=`ls -l $logLocation${arr[$count]} |awk '{print $5}'` 
     echo -n "${arr[$count]} " 
     if [ $nc == ${arrcount[$count]} ] ; then 
     echo 'error' | mailx -s "issue" [email protected] 
     else 
      arrcount[$count]=$nc 
      echo $successMessage 
    not_updated_time=0 
     fi 
    done 
    echo 
done 

는 스크립트가 여전히 작동하지 쉼표로 문제가 해결되었습니다. 어떤 아이디어?

+0

'의 편곡에 = ($ 로그 파일)을'무엇을'comma'에 무슨 일이 일어나고? –

+0

가능한 경우'ls -l' 출력을 사용하지 마십시오. 대부분의 시스템에는 filespec (단일 또는 다중)에 필요한 정보를 인쇄 할 수있는'stat' 프로세스가 있습니다. 행운을 빕니다. – shellter

+0

@David C. Rankin이 의미하는 바는 무엇입니까 – connollyc4

답변

0

logLocation 초기화시 또는 $logLocation${arr[$count]}으로 해당 변수를 사용할 때 /이 누락 된 것으로 보입니다.

logLocation="/user/file/logs/" 

또는 :

이 두 가지 변화 중 하나를 시도

`ls -l $logLocation/${arr[$count]} |awk '{print $5}'` 
+0

스크립트 자체가 작동합니다. 그렇지 않은 경보의 전자 메일입니다. 전자 메일 알림 부분을 작동 시키려고합니다. – connollyc4

+0

전자 메일이 서버에 고정되어 있습니까? 'mailq'로 대기열에서 볼 수 있습니까? –

관련 문제