Постійно слідкуйте за файлами, відкритими / доступними до процесу


25

lsof -p 12345 перерахує всі файли, відкриті процесом, чий pid - 12345, але лише на певний момент часу.

Як ми можемо постійно контролювати процес від початку до кінця (поки процес не припиняється), щоб перелічити / показати кожен файл, до якого входив процес протягом усього його життя?


Відповіді:


31

Спробуйте з strace -p 12345; він повинен робити те, чого ви намагаєтесь досягти.

Вихід може бути відфільтрований, щоб відображати лише відкриті файли ( коментар Дена Д. ):

strace -e open -p 12345

Примітка. Ви також можете простежити швидко запущені процеси за допомогою strace -e open <command>.


вихід не є дружнім і занадто багато зайвих речей.
MA1,

Ви можете це виправити за допомогою трубопроводів - strace -p {pid} | grep -i "Open" | tee files_opened.log. Ключ полягає в тому grep, що дозволяє фільтрувати вихідний сигнал за потрібним системним викликом (наприклад open()).

11
@Ninefingers Насправді це straceможна зробити краще, ніж grepз -eможливістю:strace -e open
Dan D.

@DanD о так, ofc :)

Коли я вбиваю команду strace, вона також вбиває те, що вона простежує. Чому це відбувається (cygwin)?
CMCDragonkai

6

Нова фетраса утиліти зробить це: https://launchpad.net/fatrace/

sudo fatrace | grep '(6514)'

Не використовуйте параметр -p, це означає протилежне тому, що це означає в lsof або інших утилітах.


3

Це призведе до повторного запуску вашої команди та очищення екрана кожного разу:

watch "lsof -p 12345"

ПОПЕРЕДЖЕННЯ: це пропустить швидкий доступ до файлів і підходить лише для перегляду довгих файлів


2
Це дещо незграбно в порівнянні з іншими відповідями strace.
Девід Фоерстер

1
Це неточне рішення - процес може використовувати файли між стратамиlsof
Дор

@Dor ви можете встановити час lsof на нижчу 1 секунду і збільшити його точність. Хоча це незграбно порівняно з іншими, ви помиляєтесь, що це неточне рішення.
Джордон Бедвелл

Якщо ви дивитесь на тривалу роботу з файлами (наприклад, резервне копіювання бази даних), це може бути хорошою простою альтернативою.
jcalfee314
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.