通常情况下:lsof -i:#{port}
就可以找到对应的进程的pid
kill -9 #{pid} 直接终结
kill -15 #{pid} 等待正在进行的任务完成再终结
本次纪要
问题出现:
当我想要使用docker启动mysql的时候报错:Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:3306 -> 0.0.0.0:0: listen tcp 0.0.0.0:3306: bind: address already in use ;
甚至于使用socket来启动3306的时候也显示该端口被占用;
解决思路:
1、此时我使用lsof找不到进程信息
2、但是使用netstat可以找到,但是mac不支持-p又看不到 进程id-pid
3、此时就比较懵逼了,说明应该3306有进程在占用
4、然后此时sudo lsof - i:3306
此时就发现lsof应该是涉及到用户权限的,sudo可以获取所有用户的,不加则是当前用户;
后来发现根本原因是我的mac电脑起了一个mysql,所有3306被占用了只不过忘记这茬子了;