Всем доброго времени суток. снова нужен совет опытных людей.
У меня такая задача: Есть заданная директория, и заданное время
Скрипт должен рекурсивно пройтись по заданной директории найти файлы или директории созданные после заданной даты, причем если таких файлов нет надо бить тревогу. Ступор вот в том что я не знаю как мне подцепить время и дату для проверки.
Не знаю на сколько я хорошим способом пошел но вот код:
#!/bin/bash
DIR=/n/ # Директория для анализа
MM=10 #задаем месяц
DD=25 #дату
#Time
HH=10
MM=00
#Проще говоря скрипт должен найти файлы которые созданы или менялись 25.10.2013 с 10:00 и после
#Пошел от простого для начала хотя бы найти сегодняшние файлы появившиеся после 10 часов
find $DIR -mtime 0 |while read STR # отфильтрую файлы изм. за последние 24ч.
do
R=$(ls "$STR" -lah |grep $DD |awk '{if ( $7 ~ /'$DD'/){print}}' |awk '{sub(":.*","",$8);print}' |awk '{print $8}') #Тут я пытался извлечь часы из вывода ls -lah
if [[ "$R" -ge "$HH" ]]; then # если дата более поздняя или равна заданной тогда записываем путь найденного файла.
echo "$STR" >/var/tmp/fast
fi
done
Какой-то у вас странный алгоритм решения. Задаёте конкретную дату, но всё равно проверяете только файлы за последние 24 часа. А если с момента вашей даты прошло больше 24 часов?
Я бы сначала создал файл с заданным таймстампом, а потом нашёл все файлы, которые новее. Ну и по результатам поиска принимал бы решения, что делать дальше.
Совсем старые файлы не нужны. На сасмом деле нужны файлы которые не более недели. Дело такое: есть планировщик который запускает разные обработчики. обработчики результаты пишут в логе. Создаётся каталог с датой и временем в него уже пишутся логи. Идея заключается чтобы чекать всё ли нормально с планировщиком, если новых директорий и логов не появилось после того как планировщик запустился то случилась беда
Идея заключается чтобы чекать всё ли нормально с планировщиком, если новых директорий и логов не появилось после того как планировщик запустился то случилась беда
с помощью опции newer ищите файлы, которые созданы (mtime) ПОСЛЕ доступа (atime) к исполняемому файлу планировщика.
ЗЫЖ если вы уже юзаете noatime, то вы только-что наступили на эти грабли (:
Это при условии, что файловая система смонтирована с опцией atime, в то время как по дефолту всегда relatime (и это правильно).
да. И всё равно the file's last access time is always updated if it is more than 1 day old. Т.ч. для ТСа подойдёт, у него время -- неделя. Relatime просто удобная фича, которая не ломает программы и скрипты, и тем не менее не долбит инод на каждом доступе как при atime. Такие скрипты не ломаются потому, что atime всё равно обновляется каждый день. Ну если уж у ТСа с этим проблемы, то он может использовать какой-то продукт метаболизма его планировщика. PID-файл например.
Почитайте man mount, там опций, связанных с atime, гораздо больше, чем две.
да? Я три насчитал:
1. вредная и устаревшая atime
2. новая дефолтная relatime
3. ещё есть strictatime, что-бы рулить atime из юзерспейса.
А про что я не знаю?
А можно теперь посмотреть файлы созданные наоборот ДО этого времени. т.е. в идеале софт за котором мы следим должен создавать логи после опр времени. если он их не создал ИЛИ создал ДО заданного времени то что-то не так