このスクリプトを作成しましたが、出力が正しくありません。統計を計算できません。そのファイルやディレクトリはありません。ファイル形式はLiving Room-20180418-0955588134.jpgです。
どんな助けでも大変感謝します。
#!/bin/sh
LASTFILE=$(cd /volume1/surveillance/@Snapshot && ls *.jpg | tail -1)
# Input file
# How many seconds before file is deemed "older"
OLDTIME=3600
# Get current and file times
CURTIME=$(date +%s)
FILETIME=$(stat "$LASTFILE" -c %Y)
TIMEDIFF=$(expr $CURTIME - $FILETIME)
# Check if file older
if [ $TIMEDIFF -gt $OLDTIME ]; then
echo "No Movement Dectected in Last Hour" ;
exit 1
fi
答え1
GNUfind
または互換製品を使用してください。
if
! find /volume1/surveillance/@Snapshot -name '*.jpg' -mmin -60 |
grep -q '^'
then
echo No movement detected in the last hour
exit 1
fi
または以下を使用してzsh
:
last_hour=(/volume1/surveillance/@Snapshot/*.jpg(Nmh-1))
if (($#last_hour = 0)); then
echo No movement detected in the last hour
exit 1
fi
答え2
その理由は、「stat」が「/volume1/surveillance/@Snapshot/」のフルパスを表示できないためです。ファイル名のみが表示されます。したがって、スクリプトを変更する必要があります。
#!/bin/sh
DIR=/volume1/surveillance/@Snapshot
LASTFILE=$(cd $DIR && ls *.jpg | tail -1)
# Input file
# How many seconds before file is deemed "older"
OLDTIME=3600
# Get current and file times
CURTIME=$(date +%s)
FILETIME=$(stat $DIR/$LASTFILE -c %Y)
TIMEDIFF=$(expr $CURTIME - $FILETIME)
# Check if file older
if [ $TIMEDIFF -gt $OLDTIME ]; then
echo "No Movement Dectected in Last Hour" ;
exit 1
fi