web-dev-qa-db-ja.com

lsof -p PID vs lsof | grep 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)
12
IL Mare

実際の出力を確認しないと、何が起こっているのか正確に言うのは困難ですが、lsof -p PIDコマンドがlsof | grep PID 「PID」が行の任意の場所にある行を印刷しています。たとえば、PID = 123を検索している場合、grepオプションは、PIDの1231、1232、1233などの行と、123を含むフォルダにあるファイルも出力します。フルパス。

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

7
David King

lsof-開いているファイルを一覧表示し、lsof #man lsofのmanページを読んでみてください

lsof -p PIDは、PIDのプロセスIDに関連付けられている開いているファイルを一覧表示します。

オプションがない場合、lsofは、すべてのアクティブなプロセスに属する開いているすべてのファイルをリストします。 lsof | grep PIDを実行すると、すべてのアクティブなプロセスに属しているすべての開いているファイルが一覧表示され、PID番号にgrepさ​​れます。 PIDも同様です。

したがって、lsof | grep PIDを使用する場合は、完全なWordの一致lsof | grep -w PIDのように、PIDを正確に一致させる必要がありますが、PIDに他の子プロセスがある場合は、行数が増えます。

2
Ijaz Ahmad Khan

私のシステムでこれを試しましたが、両方のコマンドが同じリストを生成します。プロセスの状態が安定していることを確認するために、両方のコマンドを数回続けて試すことをお勧めします。 manページとあなたの出力によると、これは私が持つことができる唯一の説明です。

0
user148564

Lsofの一部のバージョンには、スレッドIDが含まれています。これは、出力に表示されるTID列ヘッダーによって決定できます。 lsofは各スレッドに1つずつ重複したエントリを表示する可能性があるため、このような出力はエントリの重複を引き起こします。

https://support.datastax.com/hc/en-us/articles/209826153-lsof-shows-Cassandra-is-holding-a-large-amount-of-files-open

0
Vladimir Ondrus