ターミナルがそれ自体をアンインストールできるのはなぜですか?


25

スクリーンショット

どうやってapt-get remove xterm行くの?そして、アンインストールした後、xterm閉じずに正常に機能し続けます。

されxterm、それが実行されている一方で、プロセスは、RAMにキャッシュされましたか?


6
正確に言うと、実際にアンapt-getインストールするのxtermではなく、アンインストールするのであり、xtermプロセスに何らかの形で依存していることはわかりません。そのため、「実行中にxtermをアンインストールできるのはなぜですか」。いい質問です。
フォルカーシーゲル

2
OSの実行中にハードディスクを削除する方法に似ています。
jkd

回答:


53

そうでもない。ファイルはすでにプログラムによって開かれています。ファイルを削除(および別のバージョンに置き換え)しても、プログラムが完了するまで元のファイルは開いたままになります(ただし、ディスク上に再度開く名前はありません)ので、実行中のプログラムには影響しません。ファイルに対するすべてのハンドルが閉じられた場合にのみ、ディスク上のデータブロックが解放されます。それまでは、開いているファイルは通常と同じように読み書きできます。唯一の変更点は、名前が削除されたため、誰も開くことができないことです。

プログラムの一部は、削除されたときにすでにRAMに読み込まれている可能性がありますが、破棄されて後で再読み込みされるか、以前に実行されなかったプログラムの新しい部分が削除されたファイルから読み込まれます。


4
これは、これも理由です....実際の理由でrm -rf /作品.....
heemayl

6
「ワークス」という言葉を使用して、すべてを完全に破壊することを説明したい場合。;)興味深いことに、rm -rf /その後すぐに2回実行しようとしても機能しません;)
thomasrutter

1
lsof出力で「/ some / file / name(deleted)」を見たことがありますが、それが「ゾンビ」ファイルのように見えますが、そのようなファイルの内容が消えないように保存する方法はありますか?最後のファイルハンドルが死んだとき?
キリアンフォス

1
@KilianFoth、ファイルがまだ開いているプロセスを見つけることができる場合、/ proc / $ PID / fd / $ IDから別のファイルにコピーできますが、ファイルを回復する方法を見つけることができないようですファイルをハードリンクする試みはすべて失敗するため、適切な場所に配置します。
-psusi

3
@KilianFothファイルハンドルがある場合はrootlinkatシステムコールを使用して、ファイルハンドルの名前を作成することができます(したがって、削除を防止できます)。ただし、実行可能ファイルとライブラリはメモリマップされているため、ファイルハンドルは不要です。メモリマップされているためにのみ存在するファイルのハンドルを取得する方法を知りません。実行可能ファイルは実行/proc中にアクセスできますが、回復できない可能性があるのはライブラリと他のメモリマップファイルのみです。詳細については、別の質問としてお尋ねください。
カスペルド

8

されxterm、それが実行されている一方で、プロセスは、RAMにキャッシュされましたか?

まさに。実行中にクラッシュすることなく更新をインストールできるプロセスに似ています。また、サービスの更新後にサービスを再起動する必要がある理由。何かが実行されると、そのバイナリはメモリ内にあります。

削除または置換される他のファイル(保持された「開いた」状態ではない)に依存している場合、問題が発生する可能性がありますが、のような個別の問題は問題xtermではありません。


6
プログラムの一部は、必要な場合にのみメモリに読み込まれ、他の用途のためにメモリを解放するためにいつでも破棄される可能性があるため、後で再度読み込む必要があります(プログラムがそれらの部分にアクセスしようとするとき再び)。
-psusi

17
必ずしもRAMにあるとは限りません。ただし、ファイルは、xterm実行可能ファイルを含め、開かない限り実際には削除されません。
user253751

@immibis、したがって、私の答え;)
psusi

2

それは実際にコンピューターがどのように機能するかの特徴です。プログラムが呼び出されると、それは実際にメモリにロードされ、そこから動作します。

ファイルは実際には同じように機能します。問題を回避するために、UNIX風のシステムの多くのファイルはロックを作成します。

実際の謎は、Windowsでそのような類似のことを実行できない理由です。

この機能は、実際には、システムでアクティブなプログラムを含むシステム全体を更新できるようにするものです。;)


+1の「実際の
真ん中
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.