一、知道端口 8080,如何找到项目位置?
方法1:lsof 命令(最直接)
sudo lsof -i :8080
输出示例:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
uvicorn 1234 root 3u IPv4 12345 0t0 TCP *:8080 (LISTEN)
然后根据 PID 查进程详情:
# 查看进程的工作目录
pwdx 1234
# 或者查看进程的完整信息
ps -ef | grep 1234
方法2:netstat + ps 组合
# 找到 PID
sudo netstat -tlnp | grep 8080
# 输出:tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 1234/uvicorn
# 查看进程详情
ps -ef | grep 1234
方法3:ss 命令(现代 Linux 推荐)
sudo ss -tlnp | grep 8080
方法4:查进程的环境变量和启动命令
# 查看进程的完整启动命令(会显示项目路径)
cat /proc/1234/cmdline | tr '\0' ' '
# 查看进程的工作目录
ls -l /proc/1234/cwd
二、如何杀掉这个服务?
方法1:通过 PID 杀掉
# 先找到 PID
sudo lsof -i :8080
# 假设 PID 是 1234
# 杀掉进程
kill 1234 # 正常终止
kill -9 1234 # 强制终止(如果上面不行)
方法2:一行命令直接杀
# 杀掉占用 8080 端口的进程
sudo lsof -ti :8080 | xargs kill
# 强制杀
sudo lsof -ti :8080 | xargs kill -9
方法3:按进程名杀掉
# 杀掉所有 uvicorn 进程
pkill uvicorn
# 强制杀
pkill -9 uvicorn
# 杀掉所有 node 进程(npm run dev)
pkill node
方法4:杀掉 tmux 会话中的服务
# 查看 tmux 会话
tmux ls
# 进入会话后 Ctrl+C 停止,或者直接杀掉会话
tmux kill-session -t backend
tmux kill-session -t frontend
三、完整操作示例
# 1. 查看谁占了 8080
sudo lsof -i :8080
# 输出:
# uvicorn 3456 root 3u IPv4 ... TCP *:8080 (LISTEN)
# 2. 查看项目位置
pwdx 3456
# 输出:/home/user/my-backend-project
# 3. 杀掉进程
kill 3456
# 4. 确认已释放
sudo lsof -i :8080
# 无输出,表示端口已释放
四、快速参考卡片
| 需求 | 命令 |
|---|---|
| 查看端口占用 | sudo lsof -i :8080 |
| 查看进程工作目录 | pwdx <PID> |
| 查看完整启动命令 | cat /proc/<PID>/cmdline |
| 正常杀进程 | kill <PID> |
| 强制杀进程 | kill -9 <PID> |
| 按端口杀 | sudo lsof -ti :8080 | xargs kill |
| 按进程名杀 | pkill uvicorn |
评论区