Как установить (найти) atime в секундах?

Как установить время в миллисекундах, секундах или минутах? По умолчанию используются дни:

-time n
Последний доступ к файлу n * 24 часа назад. Когда выясняется, сколько 24-часовых периодов назад последний доступ к файлу, любая дробная часть игнорируется, поэтому для сопоставления -time +1 к файлу должен быть доступ как минимум два дня назад.

Я хотел бы запустить задание cron, скажем, ежечасно, чтобы проверить, были ли доступны файлы в определенном каталоге в течение этого временного интервала. Время ввода в виде десятичной дроби не работает, т.е.

 find . -atime 0.042 -print 

Но, может быть, есть лучшее решение – возможно, другая команда? Или, возможно, этого не может быть сделано. Для поиска файлов, измененных за последние x минут, существует -mmin что позволяет установить время в минутах. Возможно, отсутствие такой опции для времени доступа подразумевает, что информация не сохраняется одинаково?

Я использую Ubuntu 16.04.

2 Solutions collect form web for “Как установить (найти) atime в секундах?”

Обратите внимание, что когда вы делаете -mtime <timespec> , <timespec> проверяет возраст файла в момент начала find .

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

Также обратите внимание, что не все файловые системы поддерживают отметки времени с субсекундной детализацией.

Сказав это, есть несколько вариантов.

С find многих BSD и одного из schily-tools вы можете сделать:

 find . -atime -1s 

Поиск файлов, к которым был обращен последний доступ менее чем за секунду назад (по сравнению с началом find ).

С zsh :

 ls -ld -- **/*(Dms-1) 

Для субсекундной гранулярности с помощью инструментов GNU вы можете использовать ссылочный файл, который вы установили с touch :

 touch -ad '0.5 seconds ago' ../reference find . -anewer ../reference 

Или с последними версиями perl :

 perl -MTime::HiRes=lstat,clock_gettime -MFile::Find -le ' $start = clock_gettime(CLOCK_REALTIME) - 0.5; find( sub { my @s = lstat $_; print $File::Find::name if @s and $s[8] > $start }, ".")' 

С помощью GNU find вы можете использовать -amin вместо -atimes . Как вы могли догадаться, это «File был последний доступ n минут назад».

Тем не менее, имейте в relatime что большинство современных систем по умолчанию используют параметр relatime для файловых систем, который сохраняет записи метаданных только путем обновления, если файл был фактически изменен с момента последнего доступа или если был установлен порог (обычно 24 часа).

Таким образом, вы, вероятно, захотите изменить это для рассматриваемой файловой системы или искать другой подход. incrond – это удобный способ настроить сценарии для работы с файловой системой без необходимости писать собственный демон.

  • Как сортировать файлы по части имени файла?
  • Как удалить файл с помощью команды mv?
  • Как удалить прежний каталог MTP, который теперь дает мне ошибку ввода / вывода всякий раз, когда я пытаюсь?
  • Как заставить Krusader показать реальный размер символических файлов?
  • Подавить имя файла с выхода sha512sum
  • Как рассчитать в linux количество файлов внутри вложенных каталогов?
  • Удалите определенный суффикс из всех файлов в каталоге
  • Измените строки в нескольких файлах на текущее имя подкаталога
  • Не удалось удалить $ sign named с помощью linux?
  • Как установить метаданные для музыкальных файлов?
  • Как я могу удалить все файлы в папку, к которой не было доступа за определенное время?
  • Interesting Posts

    Лучшие практики для упаковки самостоятельно созданного программного обеспечения для Debian

    Как сортировать данные по номерам в третьем столбце?

    BTRFS – удаление диска путем деления вместо пути

    Как я могу получить эту проприетарную камеру с низким разрешением, работающую в Linux?

    Как я могу открыть thunar, чтобы он выбирал конкретный файл?

    Как создать каталог, который будет иметь доступ к пользователю, который устанавливает пакет?

    awk синтаксическая ошибка неожиданная новая строка или конец строки

    Как автоматизировать mutt при удалении старых почтовых рассылок?

    Эффективный способ поиска массива в текстовом файле AWK

    Есть ли причина для синхронизации ntpd с Local (0), если сервер не используется в качестве источника времени?

    Как использовать URL-адрес SMB с user / userid, который содержит символ @?

    Как остановить все единицы, принадлежащие одной и той же цели?

    Изменение имени хоста не изменяет имя терминала

    Использовать имя сервера вместо IP-адреса

    Запуск службы во время запуска

    Linux и Unix - лучшая ОС в мире.