GNU/Linux >> Linux の 問題 >  >> Linux

プロセスが開いているファイルを確認するにはどうすればよいですか?

解決策 1:

私は lsof が大好きです 、しかし、このような単純な質問にはやり過ぎだと思います。 /proc filesystem には、知りたいことがすべて含まれています。おそらく次の例が最適でしょう:

# ps ax|grep tail
 7196 pts/4    S+     0:00 tail -f /var/log/messages
 8773 pts/0    R+     0:00 grep tail
# ls -l /proc/7196/cwd
lrwxrwxrwx 1 insyte insyte 0 2009-07-29 19:05 /proc/7196/cwd -> /home/insyte
# ls -l /proc/7196/fd
total 0
lrwx------ 1 insyte insyte 64 2009-07-29 19:05 0 -> /dev/pts/4
lrwx------ 1 insyte insyte 64 2009-07-29 19:05 1 -> /dev/pts/4
lrwx------ 1 insyte insyte 64 2009-07-29 19:02 2 -> /dev/pts/4
lr-x------ 1 insyte insyte 64 2009-07-29 19:05 3 -> /var/log/messages

ご覧のとおり、/proc/$PID ディレクトリには、プロセスの CWD をリンクする「cwd」というシンボリック リンクが含まれています。 /proc/$PID/fd にリストされているオープン ファイル記述子についても同様です。 .

/proc/$PID 階層には、実行中のすべてのプロセスに関する豊富な情報が含まれています。覗いてみる価値あり!

解決策 2:

コマンド lsof がある場合 利用可能な [ほとんどの *nix フレーバーが行うもの] を使用します:

lsof -p NNN

プロセス NNN によって開かれているファイルを一覧表示します。しばらく BSD を使っていませんが、記憶から fuser lsof とよく似ています。

cwd を見つけるコマンドがわからない プロセスのですが、Linuxではcwdはプロセスの/ procディレクトリにシンボリックリンクされています。 /proc/NNN/cwd.

解決策 3:

プロセスの PID がわかっている場合は、

を発行できます。
lsof | grep YOURPID

すばやく簡単に覚えられます。

または

lsof -c yourprogramexecutable

解決策 4:

システムにインストールされている場合は、lsof を試してください

D


Linux
  1. ファイルを作成しているプロセスを特定する方法は??

  2. ファイルがWgetによってダウンロードされているかどうかを確認する方法は?

  3. Pidのないプロセスを特定する方法は?

  1. Linux でどのプロセスがファイルをロックしているかを調べるにはどうすればよいですか?

  2. どのプロセスが自分のプロセスにシグナルを送信したかをLinuxで確認するにはどうすればよいですか

  3. プロセスごとに開いているファイルをカウントする

  1. nginx最大オープンファイルを設定するには?

  2. Linux でファイルを開いているプロセスを特定するにはどうすればよいですか?

  3. 不正なアプリケーションによって開いたままになっているポートを閉じる、または (バインドを解除する?) 方法は?