web-dev-qa-db-ja.com

プロセスのソケットまたはパイプにリンクされたファイル記述子

可能性のある重複:
/ proc/PID/fd/Xリンク番号

ファイル記述子とprocファイルシステムでのリンケージに関する質問があります。 proc ls -la /proc/1234/fdから特定のプロセスのファイル記述子を一覧表示すると、次の出力が得られることがわかりました。

  lr-x------ 1 root   root   64 Sep 13 07:12 0 -> /dev/null
  l-wx------ 1 root   root   64 Sep 13 07:12 1 -> /dev/null
  l-wx------ 1 root   root   64 Sep 13 07:12 2 -> /dev/null
  lr-x------ 1 root   root   64 Sep 13 07:12 3 -> pipe:[2744159739]
  l-wx------ 1 root   root   64 Sep 13 07:12 4 -> pipe:[2744159739]
  lrwx------ 1 root   root   64 Sep 13 07:12 5 -> socket:[2744160313]
  lrwx------ 1 root   root   64 Sep 13 07:12 6 -> /var/lib/log/some.log

私はファイル記述子の意味を理解し、私の例からファイル記述子0 1 2および6を理解しています。それらは私のコンピューター上の物理リソースに関連付けられています。また、5はネットワーク上のリソースに接続されていると思います(ソケット)、しかし私が理解していないのは括弧内の数字の意味です。リソースのいくつかのプロパティをポイントしますか?また、なぜいくつかのリンクが壊れているのですか?そして最後に、私がすでに質問をしている限り:)パイプとは何ですか?

9
primero

それらはリソースのいくつかのプロパティを指していますか?

はい。これらは、リソースを識別するための一意の識別子です。

また、なぜいくつかのリンクが壊れているのですか?

それらはファイルシステムに存在しない思考へのリンクなので、通常の方法でリンクをたどることはできません。基本的に、リンクは、リソースタイプと一意の識別子を返す方法として悪用されています。

パイプとは?

名前が示すように、パイプは2つのポイント間の接続であり、一方の端に置かれたものはすべてもう一方の端から出ます。

9
David Schwartz

オープンパイプに関する詳細情報を取得する方法については、こちらをご覧ください。

how-can-i-get-more-info-on-open-pipes-show-in-proc-in-linux

lsof | grep 2744159739


一緒に「パイプ」される両方のコマンドは、正しく機能している必要があります。それらの1つが正しくない場合、パイプが壊れます。パイプが何か別の原因で壊れている可能性もありますが、これは最初に思い浮かんだことです。


パイプ(たとえば、bash/kshシェルでは垂直バーで表されます)を使用すると、別々のプロセスが互いに通信し、あるコマンドから受け取った情報を次の処理のために別のコマンドに渡すことができます。例えば:

ls -l | grep testfile
5
panaroik