@Mikklosh

Bash — Как сравнивать время?

Всем привет.

Есть необходимость сравнить время последнего редактирования файла с текущем временем ос, как можно это реализовать? Т.е допустим, нам нужно проверять как часто заполняется файл информацией и в случае если он какой-то период времени не редактировался, то что бы нам пришло извещение об этом.

Спасибо.
  • Вопрос задан
  • 1092 просмотра
Решения вопроса 2
@xibir
Проверка что файл изменялся более 20 с назад:
f=/tmp/test.txt
if ((`date +%s` - `date +%s -r "$f"` > 20)); then
   # do something
fi
Ответ написан
CityCat4
@CityCat4
Если я чешу в затылке - не беда!
Все операции с "временем" - это операции с целым беззнаковым числом, где время выражено в виде числа секунд с 1 января 1970 года.
_cacrl=`date -r $cadir/$crlfile +%s`
_oldcrl=`date -r $storedir/$crlfile +%s`

if [ $_cacrl -gt $_oldcrl ]; then
  echo "Banzai"
fi

Сравнить время создания двух файлов, если второй новее - сделать что-то
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
qork
@qork
{ background: #F00B42 }
Текущее время date +%s
Время редактирования stat -c %Z file.log

Вычитаешь текущее из изменения, результат сравниваешь с желаемым числом секунд.
Если(результат > желаемого){ шли оповещение }
Ответ написан
saboteur_kiev
@saboteur_kiev Куратор тега bash
software engineer
Вы можете просто использовать find для поиска файлов, которые обновлялись более xx дней назад.

for FILE in `find ./* -mtime +30`
do
  echo $FILE
done


и делать со списком все, что вам угодно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы