web-dev-qa-db-ja.com

Linuxで開いているプロセスファイルを監視する(リアルタイム)

XYZプロセスによって開かれたファイルは、コマンドで見つけることができます

ls -l /proc/PID/fd

とにかく、tail x秒ごとに自動更新するような、よりインタラクティブな方法で実行できる方法はありますか?

10
Frankie

watchコマンドを試してください:

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

時計はいいです。

古い学校のwhileループを使用できます。

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

watchは、debianベースのシステムではprocpsパッケージにあり、RedHat派生システムではprocps rpmです。

15
davey

開かれている各ファイルを表示したい場合は、straceでフィルターできます。例えば:

strace -p _pid_of_app_ -e trace=open,close
6
Evgeny

lsofwatchを組み合わせることができます。

例えば ​​watch "lsof -p 1234"は、pid 1234のすべての開いているファイルのリストを2秒ごとに提供します。必要に応じて一部のパラメータを変更できます。

3
Christian

コマンドの出力をファイルに書き込むbashファイルを作成しました。ファイルは、現在の日付に基づいて生成されました。ここでは、開いているファイルの数を数えています。

#!/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
Akanksha Sharma