Найдите, когда файл был закрыт в Unix

[1131982] Попробуйте следующую команду GNU [1132378] grep[1132379],
  • 1
    13.05.2014, 08:06
    2 ответа
    [12161]ls -l[113955] перечисляет время модификации файла. Это не время, когда файл был открыт, и не время, когда файл был закрыт, а время, когда файл был записан в последний раз. Обычно это довольно близко ко времени закрытия файла, но не обязательно идентично.[12162]Вы, вероятно, [113956]задаете неправильный вопрос[113957]. Если вы хотите реагировать, когда программа закончила запись в файл (т.е. сделать что-то, когда программа закрыла файл), время не имеет значения, вам нужно уведомление о том, что файл был закрыт.[12163]Linux имеет [12164]inotify[12165]для этого и BSD имеет [12166]kqueue[12167], но в AIX нет ничего похожего, насколько я знаю. Может быть, есть косвенный способ через систему [113962]аудита[113963], но в большинстве случаев этот подход не работает.[12168]Самый простой способ заставить программу B реагировать, когда программа A закончила писать, - это заставить программу A послать уведомление программе B. Это может быть всё, что угодно: сигнал, байт на трубе или разъёме, или просто запуск A, или сценарий, который запускает A, а затем запускает B.[12169]Если это невозможно, то хотя бы организуйте так, чтобы A записала файл на временное имя, а после завершения записи переместите его на окончательное имя. Тогда пусть B проследит только за не временными файлами.[113400]
    2
    27.01.2020, 23:15
    [

    ] Единственная информация, которую можно получить из обычной файловой системы для файла - это время модификации ([]ls -l[]), доступ ([]ls -lu[]) и модификация статуса ([]ls -lc[]). [

    ] [

    ]Файл не изменяется при закрытии, поэтому в его статусе нет ничего, что отражало бы это. Информация текущей директории []stat[] также не отражает это закрытие и отражает время модификации и изменения из файла (пока в директории не изменится что-то другое).[

    ] [

    ]Время модификации, вероятно, будет другим, если вы сделаете небуферизованную запись в файл, так как тогда реальный доступ к диску []может[], но не обязательно должен быть в момент закрытия файла. Но я не вижу простого способа проверить это из командной строки.[

    ] [

    ]BTW. Для этих экспериментов проще использовать []stat[], так как она имеет секундную гранулярность, то есть не нужно так долго ждать, чтобы получить видимую разницу ;-)[

    ].
    4
    27.01.2020, 23:15

    Теги

    Похожие вопросы