- 當(dāng)你想修改某個文件,卻被提示文件正在被修改,類似如下提示,
Found a swap file by the name ".index.ts.swp"
- 當(dāng)你想刪除某個日志文件,卻因為還有地方持續(xù)寫入,執(zhí)行rm 操作卻遲遲無法刪除,
- 甚至某一天,當(dāng)你本地想用git提交代碼時,卻被告知有g(shù)it進程正在進行操作,從而存在鎖.git/index.lock,git暫時無法提交。
這時很煩躁,也許簡單粗暴的關(guān)閉命令行或者重啟機器往往能解決問題。但是難道你不好奇,到底是誰在操作?。渴悄膫€進程占用了啊。
lsof
要查看哪個進程正在操作一個特定的文件,你可以使用 lsof(List Open Files)命令。lsof 是一個用于列出當(dāng)前系統(tǒng)中打開的文件及其相關(guān)進程的命令行工具。
使用 lsof 可以查看哪個進程正在操作特定文件:
lsof /home/user/main/.index.ts.swp
這個命令將列出所有正在操作該文件的進程。如果文件被某個進程占用,將看到類似以下的輸出:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
vim 1234 zhangsan 4uW REG 8,1 0 123456 /home/user/main/.index.ts.swp
在這個示例中,vim 是正在操作該文件的進程,1234 是進程 ID(PID)。
至此,煩人的占用者找到了,接下來便可給其送上一記重拳 !
kill -9 1234