如何找到(并杀死)侦听/使用我的TCP端口的进程? 我在Mac OS X上。
有时,在崩溃或某些错误之后,我的Rails应用程序锁定了端口3000。我无法使用ps -ef找到它。
做的时候
rails server
我懂了
地址已在使用中-bind(2)(Errno :: EADDRINUSE)
2014年更新:
要完成以下一些答案:执行kill命令之后,可能有必要删除pid文件rm ~/mypath/myrailsapp/tmp/pids/server.pid
#1楼
lsof -P | grep ':3000' | awk '{print $2}'
这只会给您在MacOS上测试过的pid。
#2楼
以上对我没有任何帮助。 有我经验的任何人都可以尝试以下操作(为我工作):
跑:
lsof -i :3000 (where 3000 is your current port in use)
然后检查报告的PID的状态:
ps ax | grep <PID>
最后,“随它去”:
kill -QUIT <PID>
#3楼
在.bash_profile
,创建一个terminate
3000进程的快捷方式:
terminate(){
lsof -P | grep ':3000' | awk '{print $2}' | xargs kill -9
}
然后,如果被阻止,则调用$terminate
。
#4楼
找:
sudo lsof -i :3000
杀:
kill -9 <PID>
#5楼
杀死端口上的进程的一种方法是使用python库:freeport( https://pypi.python.org/pypi/freeport/0.1.9 )。 安装后,只需:
# install freeport
pip install freeport
# Once freeport is installed, use it as follows
$ freeport 3000
Port 3000 is free. Process 16130 killed successfully