Sobes.tech
Back to questions
Junior — Middle
71

Каким образом можно определить файлы, которые в данный момент читаются процессом в операционной системе Linux?

Companies where asked
Альфа-БанкАльфа-Банк

Answer from AI

sobes.tech AI

В Linux можно определить файлы, которые в данный момент читаются процессом, с помощью каталога /proc. Для каждого процесса есть папка /proc/<pid>/fd/, где <pid> — идентификатор процесса. В этой папке находятся символьные ссылки на открытые файлы процесса.

Чтобы увидеть, какие файлы открыты процессом, можно выполнить:

ls -l /proc/<pid>/fd/

Для фильтрации файлов, которые именно читаются, можно использовать lsof (list open files) с фильтрацией по процессу:

lsof -p <pid>

В выводе lsof в колонке FD (file descriptor) есть суффиксы:

  • r — файл открыт на чтение
  • w — файл открыт на запись
  • u — файл открыт на чтение и запись

Таким образом, файлы с r или u в этой колонке читаются процессом.

Пример:

lsof -p 1234 | grep 'r'

Это покажет файлы, которые процесс с PID 1234 читает.