linux删除目录报错和端口已占用时如何定位已占用的进程
遇到的问题
在我准备rm -rf ./hugo_blog_temp   删除一个目录时候
他提示
1  | rm: cannot remove './hugo_blog_temp/.git/objects/pack/.nfs0000000000019b0d00000004': Device or resource busy  | 
显然是有进程占用了,那么如何定位是什么进程占用并kill这个进程呢?
使用 lsof 查找进程
1  | 定位正在使用该目录的进程  | 
然后就会得到类似:
1  | COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME  | 
可以用来找占用的端口:
1  | lsof -i:443  | 
得到类似:
1  | COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME  | 
终止进程:
1  | kill -9 1234 # 将 1234 替换为实际 PID  | 
这样即可结束掉占用进程,这个时候就可以rm -rf ./hugo_blog_temp 了
其他方法
使用 fuser 查找进程
1  | 查看占用文件的进程 PID  |