実行中のコピーコマンドを終了するために+をcp
入力すると、Ctrlext4ファイルシステムでどのような結果が発生しますか?C
ファイルシステムが破損していますか?不完全にコピーされたファイルが占有するパーティションスペースを削除した後も引き続き使用できますか?
そして最も重要なのは、cp
プロセスを終了しても安全ですか?
ベストアンサー1
これは安全ですが、当然コピーを完了していない可能性があります。
このコマンドを実行すると、cp
カーネルにファイルのコピーを作成するように指示するシステムコールが生成されます。システムコールまたはシステムコールは、アプリケーションがディスクからデータを読み取ったり、ディスクにデータを書き込むなど、カーネルからサービスを要求するために使用できる機能です。ユーザー空間プロセスは、システムコールが完了するのを待ちます。からの呼び出しを追跡すると、cp ~/hello.txt /mnt
次のようになります。
open("/home/user/hello.txt", O_RDONLY) = 3
open("/mnt/hello.txt", O_CREAT|O_WRONLY, 0644) = 4
read(3, "Hello, world!\n", 131072) = 14
write(4, "Hello, world!\n", 14) = 14
close(3) = 0
close(4) = 0
コピーするファイルごとにこの操作を繰り返します。これらのシステムコールがどのように機能するかによって破損が発生することはありません。これらのシステムコールが入力されると、致命的な信号はシステムコールが完了した後にのみ適用されます。完全、実行中はそうではありません(実際には、信号はカーネル空間からユーザー空間のコンテキストへの切り替え中にのみ到着します)。一部の信号(例read()
:)は早期に終了することがあります。
したがって、プロセスを強制終了すると、現在実行中のシステムコールが返された後にのみプロセスが終了します。これは、ファイルシステムドライバが存在するカーネルがファイルシステムを定常状態にするために必要な操作を自由に完了できることを意味します。これらのI / Oは操作中にシャットダウンされないため、ファイルシステムが破損する危険性はありません。