13

Linuxで特定のプロセスを開いたファイルを識別するためのスクリプトが必要です

fdを識別するには:

>cd /proc/<PID>/fd; ls |wc –l  

プロセスで使用しているファイル記述子の番号のリストである番号のリストが表示されることを期待しています。そのプロセスで使用しているすべてのファイルを表示する方法を教えてください。ありがとう。

4

5 に答える 5

19

おそらく使用したいコマンドはlsof. /procコマンドはシステム情報を取得するためのより明確で安定した方法であるため、これは を掘り下げるよりも優れたアイデアです。

lsof -p pid

ただし、何かに興味がある場合は、ファイルが関連付けられているファイルへのシンボリックリンクである/procことに気付くかもしれません。/proc/<pid>/fd/xコマンドでシンボリックリンクの値を読み取ることができますreadlink。たとえば、これは端末 stdin がバインドされていることを示しています。

$ readlink /proc/self/fd/0
/dev/pts/43

または、あるプロセスのすべてのファイルを取得するには、

ls /proc/<pid>/fd/* | xargs -L 1 readlink
于 2010-04-21T09:16:55.573 に答える
9

lsof は素晴らしいですが、次のことができます。

ls -l /proc/pidoftheproces/fd
于 2010-04-21T09:19:31.860 に答える
6
lsof -p <pid number here> | wc -l

lsof がない場合は、次を使用してほぼ同じことができます。/proc

例えば

$ pid=1825
$ ls -1 /proc/$pid/fd/*
$ awk '!/\[/&&$6{_[$6]++}END{for(i in _)print i}' /proc/$pid/maps
于 2010-04-21T09:16:26.710 に答える
2

lsofが必要です。foo.txtを開いたアプリケーションのPIDを取得するには:

lsof | grep foo.txt | awk -F\  '{print $2}'

またはMacmedeが反対のことをすると言ったこと(プロセスによって開かれたファイルを一覧表示する)。

于 2010-04-21T09:04:52.827 に答える
1
lsof | grep processName
于 2010-04-21T09:04:30.970 に答える