我正在编写一个脚本来查看某个设备是否在磁盘上写入。我最终得到了这个:
cd
mkdir -p /var/logfiles
CAMERANAME="tvcc16"
DIR='/share/HDA_DATA/video4/' #tvcc16
ALERTPATH="/var/logfiles/$CAMERANAME.alert"
while true; do
FILE_IS_WRITTEN=0
echo "$FILE_IS_WRITTEN" > /var/f_is_w
inotifywait -r -t 30 $DIR -e create |
while read path action file; do
echo "Written '$file' in '$path' via '$action'." | grep jpg | grep -v "INFO"
FILE_IS_WRITTEN=1
echo "$FILE_IS_WRITTEN" > /var/f_is_w
done
FILE_IS_WRITTEN=$(cat /var/f_is_w)
rm -rf /var/f_is_w
if [ $FILE_IS_WRITTEN -eq 0 ]
then
echo "NOREC (Status: $FILE_IS_WRITTEN)"
echo "recerror: camera is not recording!" > $ALERTPATH
else
echo "REC (Status: $FILE_IS_WRITTEN)"
echo "ok: camera is recording!" > $ALERTPATH
fi
done
问题是每次循环重启,inotifywait 都要重新设置 watch。这是资源和时间的昂贵......有没有办法避免这种情况?