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 |