【Linux系統線上操作替換文件的注意事項】 如果不了解Linux系統線上操作替換文件的話,很容易導致在cp時出現text file busy錯誤提示,所以掌握Linux系統線上操作替換文件是很重要的,下面隨小編一起來了解下吧 。

最近發現很多哦鞥有不知道線上操作替換文件的要點 。所以系統之家的小編又整理了一下,以便你有個了解 。
線上替換一個正在運行進程的文件時(包括二進制、動態庫、需要讀取的資源文件等) 。應避免使用cp/scp操作 。而需要使用mv/rsync作為替代 。
原因:cp是將源文件截斷然后寫入新內容 。也就是說正在打開這個文件的進程可以立刻感知到修改 。修改文件內容很可能導致程序邏輯錯誤甚至崩潰 。而mv則是標記”刪除“老文件,然后放一個新的同名文件過去 。也就是說老文件和新文件其實是兩個不同文件(inode不同),只是名字一樣而已 。正在打開老文件的進程不會受到影響 。如果進程使用了mmap打開某文件(比如載入so),如果目標文件被使用cp覆蓋并且長度變小 。那么讀取差額部分的地址時(在新文件中其實已經不存在了),會導致SIGBUS信號 。使進程崩潰 。
至于可執行文件本身 。倒是不怕cp導致崩潰 。。因為cp時會報”text file busy“ 。壓根cp不了 。這時候也應該使用mv類操作 。替換完成后重啟進程 。執行的就是新的可執行文件了 。
上面就是Linux系統線上操作替換文件的注意事項的介紹了,如果你在cp時提示text file busy的話,可能就是操作方面的錯誤了,應改為mv類操作 。
推薦閱讀
- Linux系統lsof命令使用實例匯總
- Linux中如何使用history命令
- 如何測試Linux磁盤的讀寫速度
- 如何查看Linux掛載磁盤
- Linux下如何使用ftp命令
- 如何辨別Linux軟鏈接和硬鏈接
- 如何在Linux上添加自定義字體
- Linux如何刪除swap里的指定文件
- Linux函數庫的創建方法
- Linux如何修改字符集
