Это ответ, который я написал на предыдущий вопрос:
Обычно, если вы хотите знать, что делает процесс / пользователь / файл без необходимости запускать lsof против него 24/7, вы используете Auditctl.
Предполагая, что у вас есть контроль аудита ядра недавних выпусков, это простая операция. (Это в Debian-fu, если вы работаете с Red Hat при необходимости)
# apt-get install auditd
Убедитесь, что он работает (/etc/init.d/auditd status).
auditctl -a entry,always -F arch=b64 -S open -F pid=<process id>
Замените b64 на b32, если вы используете 32-битную арку, open можно заменить любым системным вызовом или словом «all».
Для получения дополнительной информации прочитайте man-страницу auditl.
Вы можете использовать этот метод и попросить его следить за системным вызовом unlink.
Параметр -w полезен для просмотра файлов / каталогов, но, как объясняет man-страница, есть предостережения.
-w путь Вставить наблюдение за объектом файловой системы в пути. Вы не можете вставить часы в каталог верхнего уровня. Это запрещено ядром. Подстановочные знаки также не поддерживаются и генерируют предупреждение. Наблюдение за работой осуществляется путем внутреннего отслеживания inode. Это означает, что если вы поместите часы в каталог, вы увидите то, что кажется файловыми событиями, но на самом деле это просто обновление метаданных. Делая это, вы можете пропустить несколько событий. Если вам необходимо просмотреть все файлы в каталоге, рекомендуется размещать отдельные часы для каждого файла. В отличие от правил аудита syscall, часы не влияют на производительность в зависимости от количества правил, отправленных ядру.
Может быть, можно использовать incron ?
источник
Пара идей. Вы можете использовать,
strace
чтобы увидеть, что делает ваше приложение, но оно может генерировать журнал журналов и замедлять работу системы.Другая идея заключается в том, чтобы использовать
inotifywait
, а затемlsof/fuser
в файле, чтобы увидеть, что его использует. Вы можете попробовать запустить этот скрипт с высоким приоритетом (если можете), чтобы информация была максимально точной. Вероятно, он не будет перехватыватьunlink
вызов, поскольку файл будет удален до доставки события.источник
-f
флагом, чтобы следовать за дочерними элементами .Хотя рекомендация fenix audd кажется идеальной, вам может пригодиться IDS файловой системы, такой как AIDE . К сожалению, он вряд ли будет достаточно мелкозернистым для того, что вы пытаетесь изолировать.
Я часто пишу сценарии для решения проблем, подобных тем, что вы описываете. Если вы не можете достичь желаемого с помощью рекомендуемых решений, напишите что-нибудь самостоятельно. Это часто не очень сложно.
источник