как использовать сценарий оболочки, проверяющий время последнего изменения файла - PullRequest
9 голосов
/ 30 июля 2009

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

Спасибо

Ответы [ 5 ]

20 голосов
/ 30 июля 2009

Вы можете получить время последнего изменения файла с stat, а текущую дату с date. Вы можете использовать строки форматирования для обоих, чтобы получить их в «секундах с начала эпохи»:

current=`date +%s`
last_modified=`stat -c "%Y" $file`

Тогда довольно легко поставить это в условие. Например:

if [ $(($current-$last_modified)) -gt 180 ]; then 
     echo "old"; 
else 
     echo "new"; 
fi
4 голосов
/ 30 июля 2009

Синтаксис этого оператора if зависит от вашей конкретной оболочки, а команды date - нет. Я использую bash; при необходимости измените.

if [ $(( $(date +%s) - $(date +%s -r <file>) )) -le 180 ]; then
    # was modified in last three minutes
else
    # was not modified in last three minutes
fi

+%s указывает дату для вывода времени UNIX (важный бит в том, что это целое число в секундах). Вы также можете использовать stat для получения этой информации - команда stat -c %Y <file> эквивалентна. Убедитесь, что вы используете %Y, а не %y, чтобы вы могли использовать время в секундах.

3 голосов
/ 30 июля 2009

Команда stat выдаст вам время последнего изменения

stat -c %y <filename>
2 голосов
/ 25 сентября 2013

Find может выводить имя файла, если оно было изменено за последние 3 минуты.

find file1 -maxdepth 0 -mmin -3
0 голосов
/ 30 июля 2009

Изменение метки времени файла не означает, что вы успешно скопировали.
Если вы повредили файл или в файловой системе не осталось места,
вы, вероятно, все еще увидите изменение метки времени (необходимо это подтвердить).

Я не понимаю точный контекст вашего требования.
Если вы запускаете cp, он завершается и возвращается - не возвращается, пока работает.
Итак, не является ли возврат (с кодом завершения успеха) хорошим показателем успеха?

Как и почему вы могли бы частично выйти из операции cp?
Или это пакетный cp скрипт, который перебирает список файлов ...
некоторая разработка поможет.

...