解決 Linux 覆蓋檔案遇到 Text file busy 的問題

在 Linux 上覆蓋檔案遇到 cp: cannot create regular file ... Text file busy 的錯誤訊息。解決方式是刪除佔用檔案的程序。

Penguin Bird
Photo by Jay Ruzesky on StockSnap


問題狀況

在 Linux 上覆蓋檔案遇到 cp: cannot create regular file ... Text file busy 的錯誤訊息

$ sudo cp chromedriver /path/to/folder/

cp: cannot create regular file ‘/path/to/folder/chromedriver’: Text file busy

解決方式

步驟 1:檢查檔案是否被其他程序佔用

輸入指令列出目前正在電腦記憶體中的所有程序
$ ps aux
因為只需要顯示預計被覆蓋的檔案相關的程序,指令修改成

$ ps aux | grep '/path/to/folder/chromedriver'

root      16633  0.4  0.1 16983548 8120 ?       Sl   02:38   0:00 /path/to/folder/chromedriver --port=17765

root    16730  0.0  0.0 112816   988 pts/0    R+   02:38   0:00 grep --color=auto path/to/folder/chromedriver

步驟 2:刪除佔用檔案的程序

確認佔用檔案的程序可以刪除後

(1) 如果只有一支程序佔用檔案,可以直接刪除該程序。刪除程序的語法:

$ sudo kill <PID>

在程序清單上的第二欄顯示 <PID> (process ID),因此將 <PID> 改成清單上顯示的數字

$ sudo kill 16633

(2) 如果有多支程序佔用,逐一刪除並不實際,改成依照名稱刪除。刪除程序的語法:

$ sudo kill $(ps aux | grep '名稱' | awk '{print $2}')

$ sudo kill $(ps aux | grep '/path/to/folder/chromedriver' | awk '{print $2}')

步驟 3:重試覆蓋檔案的指令

sudo cp <檔名> /path/to/folder/

系統環境版本

macOS Monterey v.12.3.1

參考資料


留言