이 스크립트를 작성했지만 출력이 올바르지 않습니다. 통계를 계산할 수 없습니다. 해당 파일이나 디렉터리가 없습니다. 파일 형식은 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
GNU find
또는 호환 제품을 사용하세요.
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