Это ответ, который я написал на предыдущий вопрос:
Обычно, если вы хотите знать, что делает процесс / пользователь / файл без необходимости запускать 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, часы не влияют на производительность в зависимости от количества правил, отправленных ядру.