在 Linux 上覆蓋檔案遇到 cp: cannot create regular file ... Text file busy 的錯誤訊息。解決方式是刪除佔用檔案的程序。
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
參考資料
- 程式扎記: [Linux 小學堂] Linux 程序管理 ( ps -l / ps aux / ps axjf )
- How to Kill a Process in Ubuntu & Other Linux Distributions
- Find and kill a process in one line using bash and regex - Stack Overflow
留言
張貼留言