контролируйте открытые файлы процесса на Linux (в реальном времени)

Возможно записать пользовательскую программу или даже VBScript, установить это. Но у меня нет примера под рукой. Но нет никакого встроенного механизма, чтобы сделать это.

10
задан 12 November 2019 в 17:06
4 ответа

Попробуйте watch команда:

watch -n 10 ls -l /proc/$$/fd

Часы хороши.

Вы могли использовать старый школьный цикл с условием продолжения:

while :
do
 ls -l /proc/$$/fd
 sleep 10
done

watch находится в procps пакете в базирующихся системах debian, и procps об/мин на Redhat получил системы.

15
ответ дан 2 December 2019 в 22:01

Я создал файл удара, где я писал вывод команды в файл. Файл был сгенерирован на базисную текущую дату. Здесь я - целое число открытых файлов.

#!/bin/bash
while :
do
 cd /proc/<PID>/fd
 today=$(date +"%m-%d-%Y")
 filename="/tmp/${today}.txt"
 ls -l | wc -l >> "${filename}"
 sleep 10
done
0
ответ дан 2 December 2019 в 22:01

Вы могли объединиться lsofи watch.

Например, watch "lsof -p 1234" будет давать Вам список всех открытых файлов pid 1234 каждые 2 секунды. Вы могли изменить некоторые параметры для удовлетворения потребностей.

3
ответ дан 2 December 2019 в 22:01

Если вы хотите видеть каждый файл в момент его открытия, вы можете отфильтровать его с помощью strace . Например:

strace -p _pid_of_app_ -e trace=open,close
6
ответ дан 2 December 2019 в 22:01

Теги

Похожие вопросы