lsof -p PIDとlsof PID |

lsof -p PIDとlsof PID |

lsofコマンドの出力がわかりません。

私が書くとき

lsof -p PID

使ってみると4行が出ます。

lsof | grep PID

何百もの行があります。

同じ結果を返すべきではありませんか?

ご回答ありがとうございます。出力は次のとおりです。サブプロセスのようですね。それともこれはどういう意味ですか?

lsof -p 29076
COMMAND   PID  USER   FD      TYPE DEVICE SIZE/OFF NODE NAME
java    29076  pr    cwd   unknown                      /proc/29076/cwd (readlink: Permission denied)
java    29076  pr    rtd   unknown                      /proc/29076/root (readlink: Permission denied)
java    29076  pr    txt   unknown                      /proc/29076/exe (readlink: Permission denied)
java    29076  pr   NOFD                                /proc/29076/fd (opendir: Permission denied)

lsof |grep 29076|head -20
java      29076        pr  cwd   unknown                          /proc/29076/cwd (readlink: Permission denied)
java      29076        pr  rtd   unknown                          /proc/29076/root (readlink: Permission denied)
java      29076        pr  txt   unknown                          /proc/29076/exe (readlink: Permission denied)
java      29076        pr NOFD                                    /proc/29076/fd (opendir: Permission denied)
java      29076   300  pr  cwd   unknown                          /proc/29076/task/300/cwd (readlink: Permission denied)
java      29076   300  pr  rtd   unknown                          /proc/29076/task/300/root (readlink: Permission denied)
java      29076   300  pr  txt   unknown                          /proc/29076/task/300/exe (readlink: Permission denied)
java      29076   300  pr NOFD                                    /proc/29076/task/300/fd (opendir: Permission denied)
java      29076   329  pr  cwd   unknown                          /proc/29076/task/329/cwd (readlink: Permission denied)
java      29076   329  pr  rtd   unknown                          /proc/29076/task/329/root (readlink: Permission denied)
java      29076   329  pr  txt   unknown                          /proc/29076/task/329/exe (readlink: Permission denied)
java      29076   329  pr NOFD                                    /proc/29076/task/329/fd (opendir: Permission denied)
java      29076   330  pr  cwd   unknown                          /proc/29076/task/330/cwd (readlink: Permission denied)
java      29076   330  pr  rtd   unknown                          /proc/29076/task/330/root (readlink: Permission denied)
java      29076   330  pr  txt   unknown                          /proc/29076/task/330/exe (readlink: Permission denied)
java      29076   330  pr NOFD                                    /proc/29076/task/330/fd (opendir: Permission denied)
java      29076   331  pr  cwd   unknown                          /proc/29076/task/331/cwd (readlink: Permission denied)
java      29076   331  pr  rtd   unknown                          /proc/29076/task/331/root (readlink: Permission denied)
java      29076   331  pr  txt   unknown                          /proc/29076/task/331/exe (readlink: Permission denied)
java      29076   331  pr NOFD                                    /proc/29076/task/331/fd (opendir: Permission denied)

ベストアンサー1

実際の出力を見ずに何が起こっているのか正確に言うのは難しいですが、コマンドが「PID」のある行ではなく、lsof -p PID指定されたPIDで開かれたファイルのみを印刷するという事実によるものと思います。lsof | grep PIDラインのどこにでもあります。たとえば、PID = 123を検索すると、grepオプションはPID 1231、1232、1233などの行とフルパスの123を含むフォルダ内のすべてのファイルも印刷します。

編集:特定の例の違いは、lsofスレッドによって開かれたファイルが無視されることです。例の出力を見ると、grep3番目の列は「TID」またはスレッドIDです。 TIDなしの行は、-pこのオプションを使用したときに表示されるものと一致します。 TIDを持つ行(つまり、他のスレッドによって開かれた行)は追加です。

おすすめ記事