0

リンクされていないファイルが複数のプロセスで保持される方法を誰かが説明できますか? 現在、同じ inode 1543 に対して 4 つのプロセスが表示されます

# /usr/local/bin/lsof +aL1 /dev/vg00/lvol4

Xvnc      20622 p32adm    2u   REG 64,0x40004 4587683840     0 1543 /home (/dev/vg00/lvol4)
vncconfig 20649 p32adm    1u   REG 64,0x40004 4587683840     0 1543 /home (/dev/vg00/lvol4)
vncconfig 20649 p32adm    2u   REG 64,0x40004 4587683840     0 1543 /home (/dev/vg00/lvol4)
xterm     20650 p32adm    1u   REG 64,0x40004 4587683840     0 1543 /home (/dev/vg00/lvol4)
xterm     20650 p32adm    2u   REG 64,0x40004 4587683840     0 1543 /home (/dev/vg00/lvol4)
twm       20651 p32adm    1u   REG 64,0x40004 4587683840     0 1543 /home (/dev/vg00/lvol4)
twm       20651 p32adm    2u   REG 64,0x40004 4587683840     0 1543 /home (/dev/vg00/lvol4)
4

2 に答える 2

1

Marcus Müller が既に回答したように、異なるプロセスがリンクされていないファイルを共有しないことを期待する特別な理由はありませんが、あなたの場合、これらのファイルはプロセスstdoutstderr.

これらのプロセスはすべて、この方法で起動された元のコマンドからこれらのファイル記述子を継承したと思います。

Xvnc ... > someLogFile 2>&1

その後、someLogFile(失敗して)スペースを回復するために削除されました。

于 2015-01-10T05:03:55.717 に答える
0

リンクされていないファイルが複数のプロセスで保持される方法を誰かが説明できますか?

はい、誰かができます。

まず第一に、現在リンクが解除されているという事実は、プロセスがファイル ハンドルを取得したときにリンクが解除されたことを必ずしも意味するわけではありません。

しかし、あなたのリストを見ると、これらは共有メモリセグメントのようなものであり、ファイルシステムノードをどこかに持つ必要はないと思います。

編集:OPはコメントで共有メモリセグメントの説明を求めたので、ここにあります:

最新の CPU と OS はプロセスのアドレス空間を互いに分離しているため、プロセス A はプロセス B のメモリにアクセスできません。現在、A と B が情報を交換する必要がある場合、そのための 1 つの方法は、オペレーティング システムにマッピングを要求することです。両方のプロセスの/同じ/メモリであるそれぞれのメモリ空間へのいくつかのアドレス。これらのセグメントにはハンドルが必要であり、これらのハンドルは私が言及していたものです。詳細については、man shm_overview.

于 2015-01-10T01:29:37.960 に答える