Ответ
Для мониторинга файлов, открытых процессом, в DevOps-практике часто используются следующие инструменты:
1. Основной инструмент: lsof (List Open Files)
# Показать все открытые файлы для процесса с PID 1234
lsof -p 1234
# Фильтровать только регулярные файлы, открытые для чтения
lsof -p 1234 | grep 'REG.*READ'
# Найти все процессы, читающие конкретный файл (например, конфигурацию)
lsof /etc/nginx/nginx.conf
2. Прямой доступ через виртуальную файловую систему /proc
# Посмотреть все файловые дескрипторы процесса
ls -la /proc/1234/fd/
# Узнать, на какой файл указывает конкретный дескриптор
readlink /proc/1234/fd/3
3. Для мониторинга в реальном времени (DevOps-сценарии)
# Отслеживать, какие файлы открывает процесс при запуске
strace -e open,openat -p 1234 2>&1 | grep -v ENOENT
# Использовать в скриптах для аудита безопасности
for pid in $(pgrep nginx); do
echo "PID $pid открывает:"
lsof -p $pid | grep REG
done
Практическое применение в DevOps:
- Диагностика утечек файловых дескрипторов у веб-серверов
- Аудит доступа к конфиденциальным файлам (сертификаты, ключи)
- Оптимизация производительности приложения (поиск частых операций I/O)
- Расследование инцидентов безопасности