Files
當我殺死’cp’時會發生什麼?它安全嗎?它有什麼後果嗎?
當我在執行時鍵入+終止複制
cp
命令時,對 ext4 文件系統有什麼影響?Ctrl``C
文件系統是否損壞?不完整的複製文件所佔用的分區空間在刪除後是否還能使用?
而且,最重要的是,終止
cp
程序是否安全?
這樣做是安全的,但自然你可能還沒有完成副本。
當
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 都不會在操作過程中終止,因此不存在文件系統損壞的風險。