Как найти файлы, написанные прямо сейчас в Linux? - PullRequest
0 голосов
/ 09 декабря 2010

Мне нужно найти файлы, написанные каким-то скриптом в текущий момент в linux. Скрипт работает и записывает в некоторые логи, txt, некоторые другие файлы, и я хотел бы выяснить, какие именно файлы задействованы. Возможно ли это?

Я попытался сделать это с помощью find, сначала создав файл temp.cnewer с определенной отметкой времени:

touch temp.cnewer -t 201012091145

и затем путем поиска всех файлов, измененных после его создания:

find / -type f -newer temp.cnewer

но это показывает слишком много результатов. Когда я проверил статистику для нескольких из них, это показывает, что время модификации находится в будущем времени (не знаю, как это происходит, системное время правильно): ...

Access: 2010-12-09 18:09:14.214730466 +0000
Modify: 2010-12-09 18:09:14.214730466 +0000
Change: 2010-12-09 18:09:14.214730466 +0000

Есть ли другой способ выбрать эти файлы?

Ответы [ 3 ]

4 голосов
/ 09 декабря 2010

В зависимости от того, как долго файлы остаются открытыми, команда lsof может делать то, что вы хотите.Другой вариант - запустить его под strace и найти системные вызовы открытия файлов.

2 голосов
/ 10 декабря 2010

Похоже, ваше время модификации указано в UTC (часовой пояс +0000), поэтому оно выглядит в будущем. Я считаю, что touch -t также использует UTC, что объясняет дополнительные результаты. Ваш оригинальный метод, вероятно, будет работать нормально, если вы используете UTC для установки времени изменения вашего файла temp.cnewer.

1 голос
/ 09 декабря 2010

Если файл все еще открыт, вы можете найти pid скрипта и затем

ls -l / proc / PIDNUMBER / fd

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...