2016-08-12 2 views
0

Я создал сценарий bash, который запускается каждый день 06:00, чтобы проверить, был ли файл изменен с 05:00 до 06:00.Определить, изменился ли файл

Наш сервер автоматически загружает этот файл upload.xml каждый день в 05:00 и заменяет старый, поэтому я создал сценарий bash, который будет проверять, был ли этот файл загружен.

Мой сценарий bash не работает, как я хочу. Каждый день отправляет электронную почту из сценария bash, который говорит мне об этом файле, не был загружен или изменен и проверен, что файл уже загружен с новым измененным временем.

Так что же с моим кодом.

вот мой код сценария bash.

[[ -z `find /home/USER/public_html/upload.xml -mmin -60` ]] 

if [ $? -eq 0 ] 
then 
    mail -s "File has not been changed" [email protected] 
else 
    echo -e "file has been changed" 
fi 

ответ

0

Использование $() вместо унаследованного backticks.

var="$(find /home/USER/public_html/ -type f -mmin -60 -name "upload.xml")" 
if [ -z "$var" ] #checking if a SET variable is empty 
then 
    mail -s "File has not been changed" [email protected] 
else 
    echo -e "file has been changed" 
fi 

Примечания

  • В найти указать путь первого затем процеживают для файла с помощью -name
  • Двойные Цитируя переменные не делает никакого вреда здесь.
+0

Благодарим за внимание. Naw Я заменил ваши коды. Итак, этот скрипт проверяет, был ли файл изменен между 60 мин. Назад? – Alex

+0

@Alex Imho -60 следует интерпретировать в течение последних 60 минут и +60 как не в течение последних 60 минут – sjsam

Смежные вопросы