Для веб-сайта PHP, который я отслеживаю, мне нужно видеть, какие файлы используются каждый раз, когда браузер делает запрос.
Я думал об использовании find . -type f -amin 1
.
При этом я получаю все файлы, которые были прочитаны в последнюю минуту (это разрабатываемый сервер, поэтому веб-сайт использую только я).
Я позаботился об удалении noatime
атрибут от точки крепления.
Однако должно быть что-то еще, что мешает ядру читать фактические файлы на диске, потому что время доступа не обновляется, когда я читаю файл.
Я предполагаю, что это должен быть кеш файловой системы, который извлекает файлы из памяти.
Есть ли способ отключить кеширование файлов в определенном каталоге? (public_html в моем случае)
Также я где-то читал, что есть nobh
атрибуты монтирования, которые, по-видимому, отключают кеширование файлов в этой точке монтирования, но я не уверен.
Почему бы не посмотреть логи apache? Он перечисляет каждый файл, к которому осуществляется доступ, с отметкой времени, а также кто к нему обращался.
Если вам необходимо использовать atime, обратите внимание на следующее на странице википедии о системном вызове stat:
Разработчик ядра Linux Инго Мольнар назвал время «возможно, самой глупой дизайнерской идеей Unix всех времен», добавив: «Подумайте об этом немного:« Для каждого файла, который читается с диска, давайте сделаем ... запись на диск. ! И для каждого файла, который уже кэширован и который мы читаем из кеша ... сделайте запись на диск! »Он далее подчеркнул влияние на производительность следующим образом:
Обновления atime - это, безусловно, самый большой недостаток производительности ввода-вывода, который сегодня имеет Linux. Избавление от обновлений atime даст нам более высокую повседневную производительность Linux, чем все ускорения кэша страниц за последние 10 лет, комбинированный.
Текущие версии Linux поддерживают четыре варианта монтирования, которые можно указать в fstab:
strictatime (formerly atime, and formerly the default; strictatime as of 2.6.30) – always update atime
relatime ("relative atime", introduced in 2.6.20 and the default as of 2.6.30) – only update atime under certain circumstances (explained below)
nodiratime – never update atime of directories, but do update atime of other files
noatime – never update atime of any file or directory; implies nodiratime; highest performance, but least compatible
Для веб-сайта PHP, который я отслеживаю, мне нужно видеть, какие файлы используются каждый раз, когда браузер делает запрос.
Если я чего-то не упускаю, вы можете просто отслеживать журнал сервера.
Для Apache:
tail -f /var/log/httpd/access_log
Если PHP читает другие файлы, не включенные в запрос браузера (включая и т.п.), вы можете включить аудит.
auditctl -w /path/to/watch -p r -k php-access
Вас будет интересовать только чтение с помощью PHP.
ausearch -k php-access -ui <uid php uses>