изменение времени, чтобы проверить, был ли файл изменен за последние 24 часа - PullRequest
0 голосов
/ 07 февраля 2020
#!/bin/bash

cd /home/pi/cc/uvreadings

while true
do
   ATIME=`stat -c %Z /home/pi/cc/uvreadings/uvreadings.log`

   if [[ "$ATIME" < "$LTIME" ]]
   then
       echo "log file not updated for +24 hours"
   else
       echo "log file WAS updated in last +24 hours"
   fi

   sleep 10
done

Я пытаюсь проверить, был ли файл изменен за последние 24 часа, сравнив atime с Ltime

atime всегда будет меньше, чем ltime

, поэтому я могу изменить утверждение

if [[ "$ATIME" < "$LTIME" ]]

до

if [[ "$ATIME +1 day" < "$LTIME" ]]`

является лучшим способом для достижения этого

спасибо за любой совет

1 Ответ

0 голосов
/ 07 февраля 2020

Прежде всего, есть (по крайней мере) три разных отметки времени в файле, и вы, кажется, перепутали их. Вы говорите об atime, вместо этого опция %Z дает вам ctime, и звучит так, как будто вы на самом деле хотите mtime: время последнего изменения содержимого файла. Вы можете получить mtime с помощью stat -c %Y.

Чтобы узнать, был ли он менее одного дня go, вы действительно можете добавить к нему один день; но время в секундах, поэтому вам нужно добавить 24*60*60 секунд. Самый простой способ сделать это, вероятно, с помощью arithmeti c расширение . Это может выглядеть примерно так:

if [[ $((MTIME + (24 * 60 * 60))) > $LTIME ]] # modified in the last day

Я предполагаю, что вы написали код, чтобы получить текущее время и сохранить его в LTIME, даже если вы не указали этот код в своем вопросе. Конечно, он должен go внутри l oop. Один из способов сделать это будет

LTIME=`date +%s`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...