###############################################
# Name:check_file_status.sh
# Author:cdshrewd (cdshrewd#163.com)
# Purpose:Check wether file is changing or not.
# Usage:
# Run this scripts with 2 args.
# The first one is the file full path.
# The second one is the interval between two check time.This is optional.
# You can run this scripts like './check_file_status.sh /tmp/test.txt 3'.
# Modified Date:2017/07/30
###############################################
#!/bin/bash
set -x
check_files_status()
{
fname=$1
interval=3
if [ -n $2 ]; then
len=`echo "$2"|sed 's/[0-9]//g'|sed 's/-//g'`
if [ -z $len ]; then
interval=$2
fi
fi
if [ -f "$fname" ]
then
match_cnt=0
fsize=`ls -l $fname|awk '{print $5}'`
ctime=`ls -lc $fname|awk '{print $(NF-1)}'`
for ((i=0; i<=3 ; i++))
do
cur_ctime=`ls -lc $fname|awk '{print $(NF-1)}'`
cur_fsize=`ls -l $fname|awk '{print $5}'`
if [[ "$ctime" = "$cur_ctime" && "$fsize" -eq "$cur_fsize" ]]; then
ctime=$cur_ctime
fszie=$cur_fsize
let match_cnt+=1;
sleep $interval
fi
done
if [ $match_cnt -eq 4 ]; then
exit 0
else
exit 1
fi
else
echo "$fs is not a file."
exit 1
fi
}
check_files_status $1 $2